From 68cba8f9aff352950932987844429b7ba9cddce7 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Mon, 14 May 2018 23:53:03 +0200 Subject: [PATCH] A bit more line anim - work in (early) progress. Added inlined toD018() and toDd00(). --- .../asm/{unused => }/vwuz1=vwuz1_rol_2.asm | 0 .../kickc/fragment/asm/vwuz1=vwuz2_rol_2.asm | 8 + .../kickc/model/operators/Operators.java | 4 +- .../java/dk/camelot64/kickc/test/kc/c64.kc | 18 + .../dk/camelot64/kickc/test/kc/line-anim.kc | 24 +- .../kickc/test/ref/bitmap-bresenham.cfg | 8 +- .../kickc/test/ref/bitmap-bresenham.log | 398 +- .../kickc/test/ref/bitmap-bresenham.sym | 2 +- .../kickc/test/ref/c64dtv-8bppcharstretch.cfg | 8 +- .../kickc/test/ref/c64dtv-8bppcharstretch.log | 280 +- .../kickc/test/ref/c64dtv-8bppcharstretch.sym | 2 +- .../test/ref/c64dtv-8bppchunkystretch.cfg | 8 +- .../test/ref/c64dtv-8bppchunkystretch.log | 244 +- .../test/ref/c64dtv-8bppchunkystretch.sym | 2 +- .../kickc/test/ref/c64dtv-blittermin.cfg | 8 +- .../kickc/test/ref/c64dtv-blittermin.log | 216 +- .../kickc/test/ref/c64dtv-blittermin.sym | 2 +- .../camelot64/kickc/test/ref/c64dtv-color.cfg | 8 +- .../camelot64/kickc/test/ref/c64dtv-color.log | 206 +- .../camelot64/kickc/test/ref/c64dtv-color.sym | 2 +- .../kickc/test/ref/c64dtv-gfxexplorer.cfg | 8 +- .../kickc/test/ref/c64dtv-gfxexplorer.log | 1420 +++--- .../kickc/test/ref/c64dtv-gfxexplorer.sym | 2 +- .../kickc/test/ref/c64dtv-gfxmodes.cfg | 8 +- .../kickc/test/ref/c64dtv-gfxmodes.log | 1064 +++-- .../kickc/test/ref/c64dtv-gfxmodes.sym | 2 +- .../kickc/test/ref/chargen-analysis.cfg | 8 +- .../kickc/test/ref/chargen-analysis.log | 411 +- .../kickc/test/ref/chargen-analysis.sym | 2 +- .../kickc/test/ref/keyboard-glitch.cfg | 8 +- .../kickc/test/ref/keyboard-glitch.log | 294 +- .../kickc/test/ref/keyboard-glitch.sym | 2 +- .../dk/camelot64/kickc/test/ref/line-anim.asm | 198 +- .../dk/camelot64/kickc/test/ref/line-anim.cfg | 181 +- .../dk/camelot64/kickc/test/ref/line-anim.log | 4085 +++++++++++++++-- .../dk/camelot64/kickc/test/ref/line-anim.sym | 187 +- .../camelot64/kickc/test/ref/raster-bars.cfg | 8 +- .../camelot64/kickc/test/ref/raster-bars.log | 215 +- .../camelot64/kickc/test/ref/raster-bars.sym | 2 +- .../camelot64/kickc/test/ref/signed-words.cfg | 8 +- .../camelot64/kickc/test/ref/signed-words.log | 278 +- .../camelot64/kickc/test/ref/signed-words.sym | 2 +- .../kickc/test/ref/sinus-sprites.cfg | 8 +- .../kickc/test/ref/sinus-sprites.log | 674 +-- .../kickc/test/ref/sinus-sprites.sym | 2 +- .../kickc/test/ref/test-keyboard-space.cfg | 8 +- .../kickc/test/ref/test-keyboard-space.log | 266 +- .../kickc/test/ref/test-keyboard-space.sym | 2 +- .../kickc/test/ref/test-keyboard.cfg | 8 +- .../kickc/test/ref/test-keyboard.log | 298 +- .../kickc/test/ref/test-keyboard.sym | 2 +- 51 files changed, 8251 insertions(+), 2858 deletions(-) rename src/main/java/dk/camelot64/kickc/fragment/asm/{unused => }/vwuz1=vwuz1_rol_2.asm (100%) create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_rol_2.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/unused/vwuz1=vwuz1_rol_2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_rol_2.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/unused/vwuz1=vwuz1_rol_2.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_rol_2.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_rol_2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_rol_2.asm new file mode 100644 index 000000000..0bb37c24f --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_rol_2.asm @@ -0,0 +1,8 @@ +lda {z2} +asl +sta {z1} +lda {z2}+1 +rol +sta {z1}+1 +asl {z1} +rol {z1}+1 diff --git a/src/main/java/dk/camelot64/kickc/model/operators/Operators.java b/src/main/java/dk/camelot64/kickc/model/operators/Operators.java index fdcf37da5..d5392218a 100644 --- a/src/main/java/dk/camelot64/kickc/model/operators/Operators.java +++ b/src/main/java/dk/camelot64/kickc/model/operators/Operators.java @@ -35,8 +35,8 @@ public class Operators { public static final OperatorBinary MINUS = new OperatorMinus(4); public static final OperatorBinary SHIFT_LEFT = new OperatorShiftLeft(5); public static final OperatorBinary SHIFT_RIGHT = new OperatorShiftRight(5); - public static final OperatorUnary LOWBYTE = new OperatorGetLow(6); - public static final OperatorUnary HIBYTE = new OperatorGetHigh(6); + public static final OperatorUnary LOWBYTE = new OperatorGetLow(14); + public static final OperatorUnary HIBYTE = new OperatorGetHigh(14); public static final OperatorBinary LT = new OperatorLessThan(7); public static final OperatorBinary LE = new OperatorLessThanEqual(7); public static final OperatorBinary GT = new OperatorGreaterThan(7); diff --git a/src/test/java/dk/camelot64/kickc/test/kc/c64.kc b/src/test/java/dk/camelot64/kickc/test/kc/c64.kc index 4cae53f0f..b886f7273 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/c64.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/c64.kc @@ -91,3 +91,21 @@ const byte GREY = $c; const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; + +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} diff --git a/src/test/java/dk/camelot64/kickc/test/kc/line-anim.kc b/src/test/java/dk/camelot64/kickc/test/kc/line-anim.kc index deba92d48..7edfa1479 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/line-anim.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/line-anim.kc @@ -1,8 +1,8 @@ // Animated lines drawn on a single color bitmap import "c64.kc" -byte* BITMAP = $2000; -byte* SCREEN = $400; +byte* BITMAP = $a000; +byte* SCREEN = $8800; // The number of points const byte SIZE = 4; @@ -29,10 +29,16 @@ byte[4] delay; byte[4] frame; void main() { + asm { sei } // Disable normal interrupt + // Disable kernal & basic + *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK; + *PROCPORT = PROCPORT_RAM_IO; *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3; - *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400)); + vicSelectGfxBank(SCREEN); + *D018 = toD018(SCREEN, BITMAP); bitmap_init(BITMAP); bitmap_clear(); + screen_fill(SCREEN, $10); for( byte i=0; i!=8; i+=2) { point_init(i); bitmap_plot(x_start[i], y_start[i>>1]); @@ -42,12 +48,22 @@ void main() { } } +// Initialize the points to be animated void point_init(byte point_idx) { x_cur[point_idx] = x_start[point_idx]<<4; y_cur[point_idx] = ((word)y_start[point_idx>>1])<<4; delay[point_idx>>1] = DELAY; } +// Fill the screen with a specific char +void screen_fill(byte* screen, byte ch) { + for( byte y: 0..24) { + for(byte x:0..39) { + *screen++ = ch; + } + } +} + // Tables for the plotter - initialized by calling bitmap_draw_init(); const byte[256] bitmap_plot_ylo; const byte[256] bitmap_plot_yhi; @@ -85,7 +101,7 @@ void bitmap_clear() { // Plot a single dot in the bitmap void bitmap_plot(word x, byte y) { byte* plotter = (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }; - plotter += ( x & $fff7 ); + plotter += ( x & $fff8 ); *plotter |= bitmap_plot_bit[((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + Importing bitmap-draw.kc PARSING src/test/java/dk/camelot64/kickc/test/kc/bitmap-draw.kc // Plot and line drawing routines for HIRES bitmaps @@ -293,6 +311,9 @@ SYMBOLS (label) @1 (label) @10 (label) @11 +(label) @12 +(label) @13 +(label) @14 (label) @2 (label) @3 (label) @4 @@ -602,6 +623,34 @@ SYMBOLS (label) main::@1 (label) main::@2 (label) main::@return +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 @@ -710,12 +759,57 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 (byte[256]) bitmap_plot_xlo ← { fill( 256, 0) } (byte[256]) bitmap_plot_xhi ← { fill( 256, 0) } (byte[256]) bitmap_plot_ylo ← { fill( 256, 0) } (byte[256]) bitmap_plot_yhi ← { fill( 256, 0) } (byte[256]) bitmap_plot_bit ← { fill( 256, 0) } - to:@1 + to:@4 bitmap_init: scope:[bitmap_init] from (byte) bitmap_init::bits ← (byte/word/signed word/dword/signed dword) 128 (byte) bitmap_init::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -771,8 +865,8 @@ bitmap_init::@8: scope:[bitmap_init] from bitmap_init::@4 bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@8 return to:@return -@1: scope:[] from @begin - to:@2 +@4: scope:[] from @3 + to:@5 bitmap_clear: scope:[bitmap_clear] from (byte*~) bitmap_clear::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_xhi + (byte/signed byte/word/signed word/dword/signed dword) 0), *((byte[256]) bitmap_plot_xlo + (byte/signed byte/word/signed word/dword/signed dword) 0) } (byte*) bitmap_clear::bitmap ← (byte*~) bitmap_clear::$0 @@ -798,8 +892,8 @@ bitmap_clear::@4: scope:[bitmap_clear] from bitmap_clear::@3 bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@4 return to:@return -@2: scope:[] from @1 - to:@3 +@5: scope:[] from @4 + to:@6 bitmap_plot: scope:[bitmap_plot] from (word) bitmap_plot::plotter_x ← { *((byte[256]) bitmap_plot_xhi + (byte) bitmap_plot::x), *((byte[256]) bitmap_plot_xlo + (byte) bitmap_plot::x) } (word) bitmap_plot::plotter_y ← { *((byte[256]) bitmap_plot_yhi + (byte) bitmap_plot::y), *((byte[256]) bitmap_plot_ylo + (byte) bitmap_plot::y) } @@ -811,8 +905,8 @@ bitmap_plot: scope:[bitmap_plot] from bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot return to:@return -@3: scope:[] from @2 - to:@4 +@6: scope:[] from @5 + to:@7 bitmap_line: scope:[bitmap_line] from (bool~) bitmap_line::$0 ← (byte) bitmap_line::x0 < (byte) bitmap_line::x1 if((bool~) bitmap_line::$0) goto bitmap_line::@1 @@ -908,8 +1002,8 @@ bitmap_line::@28: scope:[bitmap_line] from bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@8 return to:@return -@4: scope:[] from @3 - to:@5 +@7: scope:[] from @6 + to:@8 bitmap_line_xdyi: scope:[bitmap_line_xdyi] from (byte~) bitmap_line_xdyi::$0 ← (byte) bitmap_line_xdyi::yd >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) bitmap_line_xdyi::e ← (byte~) bitmap_line_xdyi::$0 @@ -938,8 +1032,8 @@ bitmap_line_xdyi::@4: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@2 bitmap_line_xdyi::@return: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@4 return to:@return -@5: scope:[] from @4 - to:@6 +@8: scope:[] from @7 + to:@9 bitmap_line_xdyd: scope:[bitmap_line_xdyd] from (byte~) bitmap_line_xdyd::$0 ← (byte) bitmap_line_xdyd::yd >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) bitmap_line_xdyd::e ← (byte~) bitmap_line_xdyd::$0 @@ -968,8 +1062,8 @@ bitmap_line_xdyd::@4: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@2 bitmap_line_xdyd::@return: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@4 return to:@return -@6: scope:[] from @5 - to:@7 +@9: scope:[] from @8 + to:@10 bitmap_line_ydxi: scope:[bitmap_line_ydxi] from (byte~) bitmap_line_ydxi::$0 ← (byte) bitmap_line_ydxi::xd >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) bitmap_line_ydxi::e ← (byte~) bitmap_line_ydxi::$0 @@ -998,8 +1092,8 @@ bitmap_line_ydxi::@4: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2 bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@4 return to:@return -@7: scope:[] from @6 - to:@8 +@10: scope:[] from @9 + to:@11 bitmap_line_ydxd: scope:[bitmap_line_ydxd] from (byte~) bitmap_line_ydxd::$0 ← (byte) bitmap_line_ydxd::xd >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) bitmap_line_ydxd::e ← (byte~) bitmap_line_ydxd::$0 @@ -1029,13 +1123,13 @@ bitmap_line_ydxd::@4: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@4 return to:@return -@8: scope:[] from @7 +@11: scope:[] from @10 (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) BITMAP ← ((byte*)) (word/signed word/dword/signed dword) 8192 (byte[]) lines_x ← { (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 60 } (byte[]) lines_y ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 10 } (byte) lines_cnt ← (byte/signed byte/word/signed word/dword/signed dword) 8 - to:@9 + to:@12 main: scope:[main] from *((byte*) BORDERCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 0 *((byte*) BGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1065,8 +1159,8 @@ main::@2: scope:[main] from main::@1 main::@return: scope:[main] from main::@2 return to:@return -@9: scope:[] from @8 - to:@10 +@12: scope:[] from @11 + to:@13 lines: scope:[lines] from (byte) lines::l ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:lines::@1 @@ -1083,8 +1177,8 @@ lines::@2: scope:[lines] from lines::@1 lines::@return: scope:[lines] from lines::@2 return to:@return -@10: scope:[] from @9 - to:@11 +@13: scope:[] from @12 + to:@14 init_screen: scope:[init_screen] from (byte*) init_screen::c ← (byte*) SCREEN to:init_screen::@1 @@ -1100,11 +1194,15 @@ init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@return: scope:[init_screen] from init_screen::@2 return to:@return -@11: scope:[] from @10 +@14: scope:[] from @13 call main to:@end -@end: scope:[] from @11 +@end: scope:[] from @14 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Eliminating unused variable (byte*) PROCPORT_DDR and assignment [0] (byte*) PROCPORT_DDR ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 Eliminating unused variable (byte) PROCPORT_DDR_MEMORY_MASK and assignment [1] (byte) PROCPORT_DDR_MEMORY_MASK ← (byte/signed byte/word/signed word/dword/signed dword) 7 Eliminating unused variable (byte*) PROCPORT and assignment [2] (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -1180,11 +1278,13 @@ Eliminating unused variable - keeping the call (void~) main::$12 Eliminating unused variable - keeping the call (void~) main::$13 Eliminating unused variable - keeping the call (void~) main::$14 Eliminating unused variable - keeping the call (void~) lines::$2 -Removing empty block bitmap_init::@8 Removing empty block @1 -Removing empty block bitmap_clear::@4 Removing empty block @2 -Removing empty block @3 +Removing empty block bitmap_init::@8 +Removing empty block @4 +Removing empty block bitmap_clear::@4 +Removing empty block @5 +Removing empty block @6 Removing empty block bitmap_line::@4 Removing empty block bitmap_line::@18 Removing empty block bitmap_line::@5 @@ -1199,18 +1299,18 @@ Removing empty block bitmap_line::@12 Removing empty block bitmap_line::@26 Removing empty block bitmap_line::@14 Removing empty block bitmap_line::@28 -Removing empty block @4 -Removing empty block bitmap_line_xdyi::@4 -Removing empty block @5 -Removing empty block bitmap_line_xdyd::@4 -Removing empty block @6 -Removing empty block bitmap_line_ydxi::@4 Removing empty block @7 +Removing empty block bitmap_line_xdyi::@4 +Removing empty block @8 +Removing empty block bitmap_line_xdyd::@4 +Removing empty block @9 +Removing empty block bitmap_line_ydxi::@4 +Removing empty block @10 Removing empty block bitmap_line_ydxd::@4 Removing empty block main::@2 -Removing empty block @9 +Removing empty block @12 Removing empty block lines::@2 -Removing empty block @10 +Removing empty block @13 Removing empty block init_screen::@2 PROCEDURE MODIFY VARIABLE ANALYSIS @@ -1233,12 +1333,14 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + to:@3 +@3: scope:[] from @begin (byte[256]) bitmap_plot_xlo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_xhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) } - to:@8 + to:@11 bitmap_init: scope:[bitmap_init] from main (byte*) bitmap_init::bitmap#2 ← phi( main/(byte*) bitmap_init::bitmap#0 ) (byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128 @@ -1782,15 +1884,15 @@ bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@5 bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 return to:@return -@8: scope:[] from @begin +@11: scope:[] from @3 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) BITMAP#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 (byte[]) lines_x#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 60 } (byte[]) lines_y#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 10 } (byte) lines_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 - to:@11 -main: scope:[main] from @11 - (byte) lines_cnt#9 ← phi( @11/(byte) lines_cnt#10 ) + to:@14 +main: scope:[main] from @14 + (byte) lines_cnt#9 ← phi( @14/(byte) lines_cnt#10 ) *((byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte~) main::$0 ← (byte) VIC_BMM#0 | (byte) VIC_DEN#0 @@ -1870,18 +1972,19 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 init_screen::@return: scope:[init_screen] from init_screen::@1 return to:@return -@11: scope:[] from @8 - (byte) lines_cnt#10 ← phi( @8/(byte) lines_cnt#0 ) +@14: scope:[] from @11 + (byte) lines_cnt#10 ← phi( @11/(byte) lines_cnt#0 ) call main - to:@12 -@12: scope:[] from @11 + to:@15 +@15: scope:[] from @14 to:@end -@end: scope:[] from @12 +@end: scope:[] from @15 SYMBOL TABLE SSA (label) @11 -(label) @12 -(label) @8 +(label) @14 +(label) @15 +(label) @3 (label) @begin (label) @end (byte*) BGCOL @@ -2456,7 +2559,7 @@ Culled Empty Block (label) bitmap_line::@33 Culled Empty Block (label) bitmap_line::@34 Culled Empty Block (label) bitmap_line::@35 Culled Empty Block (label) bitmap_line::@36 -Culled Empty Block (label) @12 +Culled Empty Block (label) @15 Succesful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) bitmap_init::$4 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) bitmap_init::$12 ← (byte~) bitmap_init::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from (bool~) bitmap_init::$11 ← (byte~) bitmap_init::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7 @@ -2915,9 +3018,10 @@ Eliminating Noop Cast (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitma Succesful SSA optimization Pass2NopCastElimination Removing unused block main::@return Succesful SSA optimization Pass2EliminateUnusedBlocks +Culled Empty Block (label) @3 Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5 Culled Empty Block (label) bitmap_init::@6 -Culled Empty Block (label) @8 +Culled Empty Block (label) @11 Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@6 Succesful SSA optimization Pass2CullEmptyBlocks @@ -3187,7 +3291,7 @@ Constant inlined init_screen::$0 = (const byte*) SCREEN#0+(word/signed word/dwor Constant inlined main::$8 = ((word))(const byte*) BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 Constant inlined bitmap_init::bitmap#0 = (const byte*) BITMAP#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @11 @end main main::@3 main::@4 main::@1 lines lines::@1 lines::@3 lines::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return init_screen init_screen::@1 init_screen::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return +Block Sequence Planned @begin @14 @end main main::@3 main::@4 main::@1 lines lines::@1 lines::@3 lines::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return init_screen init_screen::@1 init_screen::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return Added new block during phi lifting lines::@4(between lines::@3 and lines::@1) Added new block during phi lifting bitmap_line_xdyi::@6(between bitmap_line_xdyi::@2 and bitmap_line_xdyi::@1) Added new block during phi lifting bitmap_line_xdyi::@7(between bitmap_line_xdyi::@5 and bitmap_line_xdyi::@2) @@ -3204,9 +3308,9 @@ Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and b Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2) Added new block during phi lifting bitmap_init::@11(between bitmap_init::@4 and bitmap_init::@3) Added new block during phi lifting bitmap_init::@12(between bitmap_init::@3 and bitmap_init::@4) -Block Sequence Planned @begin @11 @end main main::@3 main::@4 main::@1 lines lines::@1 lines::@3 lines::@return lines::@4 bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_line_xdyi::@6 bitmap_line_xdyi::@7 bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_ydxi::@6 bitmap_line_ydxi::@7 bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_xdyd::@6 bitmap_line_xdyd::@7 bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_line_ydxd::@6 bitmap_line_ydxd::@7 init_screen init_screen::@1 init_screen::@return init_screen::@3 bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_clear::@5 bitmap_clear::@6 bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@11 bitmap_init::@12 bitmap_init::@9 bitmap_init::@10 +Block Sequence Planned @begin @14 @end main main::@3 main::@4 main::@1 lines lines::@1 lines::@3 lines::@return lines::@4 bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_line_xdyi::@6 bitmap_line_xdyi::@7 bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_ydxi::@6 bitmap_line_ydxi::@7 bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_xdyd::@6 bitmap_line_xdyd::@7 bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_line_ydxd::@6 bitmap_line_ydxd::@7 init_screen init_screen::@1 init_screen::@return init_screen::@3 bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_clear::@5 bitmap_clear::@6 bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@11 bitmap_init::@12 bitmap_init::@9 bitmap_init::@10 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @11 +Adding NOP phi() at start of @14 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@3 Adding NOP phi() at start of main::@4 @@ -3363,9 +3467,9 @@ Culled Empty Block (label) bitmap_init::@11 Culled Empty Block (label) bitmap_init::@12 Culled Empty Block (label) bitmap_init::@9 Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@10 -Block Sequence Planned @begin @11 @end main main::@3 main::@4 main::@1 lines lines::@1 lines::@3 lines::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return init_screen init_screen::@1 init_screen::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@10 +Block Sequence Planned @begin @14 @end main main::@3 main::@4 main::@1 lines lines::@1 lines::@3 lines::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return init_screen init_screen::@1 init_screen::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@10 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @11 +Adding NOP phi() at start of @14 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@3 Adding NOP phi() at start of main::@4 @@ -3389,14 +3493,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@11 -@11: scope:[] from @begin + to:@14 +@14: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @11 +@end: scope:[] from @14 [3] phi() [ ] ( ) -main: scope:[main] from @11 +main: scope:[main] from @14 [4] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) [5] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) [6] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) @@ -3757,74 +3861,74 @@ bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1 DOMINATORS @begin dominated by @begin -@11 dominated by @begin @11 -@end dominated by @end @begin @11 -main dominated by main @begin @11 -main::@3 dominated by main main::@3 @begin @11 -main::@4 dominated by main main::@3 main::@4 @begin @11 -main::@1 dominated by main main::@1 main::@3 main::@4 @begin @11 -lines dominated by main main::@1 main::@3 main::@4 @begin lines @11 -lines::@1 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 lines @11 -lines::@3 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 lines::@3 lines @11 -lines::@return dominated by main main::@1 main::@3 main::@4 @begin lines::@return lines::@1 lines::@3 lines @11 -bitmap_line dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @11 -bitmap_line::@15 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@15 lines::@1 bitmap_line lines @11 -bitmap_line::@16 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@16 bitmap_line::@15 lines::@1 bitmap_line lines @11 -bitmap_line::@17 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@17 bitmap_line::@16 bitmap_line::@15 lines::@1 bitmap_line lines @11 -bitmap_line::@return dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@return lines::@1 bitmap_line lines @11 -bitmap_line::@3 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@16 bitmap_line::@15 lines::@1 bitmap_line::@3 bitmap_line lines @11 -bitmap_line::@2 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@15 lines::@1 bitmap_line::@2 bitmap_line lines @11 -bitmap_line::@20 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@15 bitmap_line::@20 lines::@1 bitmap_line::@2 bitmap_line lines @11 -bitmap_line::@6 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@15 lines::@1 bitmap_line::@2 bitmap_line::@6 bitmap_line lines @11 -bitmap_line::@1 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line::@1 bitmap_line lines @11 -bitmap_line::@23 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@23 lines::@1 bitmap_line::@1 bitmap_line lines @11 -bitmap_line::@24 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@24 bitmap_line::@23 lines::@1 bitmap_line::@1 bitmap_line lines @11 -bitmap_line::@10 dominated by main bitmap_line::@10 main::@1 main::@3 main::@4 @begin bitmap_line::@23 lines::@1 bitmap_line::@1 bitmap_line lines @11 -bitmap_line::@9 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line::@1 bitmap_line::@9 bitmap_line lines @11 -bitmap_line::@27 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line::@1 bitmap_line::@27 bitmap_line::@9 bitmap_line lines @11 -bitmap_line::@13 dominated by main bitmap_line::@13 main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line::@1 bitmap_line::@9 bitmap_line lines @11 -bitmap_line_xdyi dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @11 bitmap_line_xdyi -bitmap_line_xdyi::@1 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @11 bitmap_line_xdyi bitmap_line_xdyi::@1 -bitmap_line_xdyi::@5 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @11 bitmap_line_xdyi bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 -bitmap_line_xdyi::@3 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @11 bitmap_line_xdyi bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@1 -bitmap_line_xdyi::@2 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @11 bitmap_line_xdyi bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 -bitmap_line_xdyi::@return dominated by main bitmap_line_xdyi::@return main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @11 bitmap_line_xdyi bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 -bitmap_plot dominated by main main::@1 main::@3 main::@4 @begin bitmap_plot lines::@1 bitmap_line lines @11 -bitmap_plot::@return dominated by main main::@1 main::@3 main::@4 @begin bitmap_plot bitmap_plot::@return lines::@1 bitmap_line lines @11 -bitmap_line_ydxi dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxi lines::@1 bitmap_line lines @11 -bitmap_line_ydxi::@1 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxi lines::@1 bitmap_line lines @11 bitmap_line_ydxi::@1 -bitmap_line_ydxi::@5 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxi lines::@1 bitmap_line lines @11 bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 -bitmap_line_ydxi::@3 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxi lines::@1 bitmap_line lines @11 bitmap_line_ydxi::@3 bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 -bitmap_line_ydxi::@2 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxi lines::@1 bitmap_line lines @11 bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 bitmap_line_ydxi::@5 -bitmap_line_ydxi::@return dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxi bitmap_line_ydxi::@return lines::@1 bitmap_line lines @11 bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 bitmap_line_ydxi::@5 -bitmap_line_xdyd dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @11 bitmap_line_xdyd -bitmap_line_xdyd::@1 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_xdyd::@1 lines::@1 bitmap_line lines @11 bitmap_line_xdyd -bitmap_line_xdyd::@5 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_xdyd::@5 bitmap_line_xdyd::@1 lines::@1 bitmap_line lines @11 bitmap_line_xdyd -bitmap_line_xdyd::@3 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@1 lines::@1 bitmap_line lines @11 bitmap_line_xdyd -bitmap_line_xdyd::@2 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 lines::@1 bitmap_line lines @11 bitmap_line_xdyd -bitmap_line_xdyd::@return dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 lines::@1 bitmap_line bitmap_line_xdyd::@return lines @11 bitmap_line_xdyd -bitmap_line_ydxd dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxd lines::@1 bitmap_line lines @11 -bitmap_line_ydxd::@1 dominated by main main::@1 main::@3 main::@4 bitmap_line_ydxd::@1 @begin bitmap_line_ydxd lines::@1 bitmap_line lines @11 -bitmap_line_ydxd::@5 dominated by main main::@1 bitmap_line_ydxd::@5 main::@3 main::@4 bitmap_line_ydxd::@1 @begin bitmap_line_ydxd lines::@1 bitmap_line lines @11 -bitmap_line_ydxd::@3 dominated by main main::@1 bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 main::@3 main::@4 bitmap_line_ydxd::@1 @begin bitmap_line_ydxd lines::@1 bitmap_line lines @11 -bitmap_line_ydxd::@2 dominated by main main::@1 bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 main::@3 main::@4 bitmap_line_ydxd::@1 @begin bitmap_line_ydxd lines::@1 bitmap_line lines @11 -bitmap_line_ydxd::@return dominated by main main::@1 bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 main::@3 main::@4 bitmap_line_ydxd::@1 @begin bitmap_line_ydxd bitmap_line_ydxd::@return lines::@1 bitmap_line lines @11 -init_screen dominated by main main::@3 main::@4 @begin init_screen @11 -init_screen::@1 dominated by main main::@3 main::@4 @begin init_screen init_screen::@1 @11 -init_screen::@return dominated by main main::@3 main::@4 @begin init_screen init_screen::@1 @11 init_screen::@return -bitmap_clear dominated by main main::@3 @begin bitmap_clear @11 -bitmap_clear::@1 dominated by main main::@3 bitmap_clear::@1 @begin bitmap_clear @11 -bitmap_clear::@2 dominated by main main::@3 bitmap_clear::@1 bitmap_clear::@2 @begin bitmap_clear @11 -bitmap_clear::@3 dominated by bitmap_clear::@3 main main::@3 bitmap_clear::@1 bitmap_clear::@2 @begin bitmap_clear @11 -bitmap_clear::@return dominated by bitmap_clear::@3 main main::@3 bitmap_clear::@1 bitmap_clear::@2 @begin bitmap_clear::@return bitmap_clear @11 -bitmap_init dominated by main @begin @11 bitmap_init -bitmap_init::@1 dominated by main @begin bitmap_init::@1 @11 bitmap_init -bitmap_init::@2 dominated by main @begin bitmap_init::@2 bitmap_init::@1 @11 bitmap_init -bitmap_init::@3 dominated by main @begin bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 @11 bitmap_init -bitmap_init::@7 dominated by main @begin bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@7 @11 bitmap_init -bitmap_init::@4 dominated by main @begin bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 @11 bitmap_init -bitmap_init::@return dominated by main @begin bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 bitmap_init::@return @11 bitmap_init -bitmap_init::@10 dominated by main @begin bitmap_init::@10 bitmap_init::@1 @11 bitmap_init +@14 dominated by @begin @14 +@end dominated by @end @begin @14 +main dominated by main @begin @14 +main::@3 dominated by main main::@3 @begin @14 +main::@4 dominated by main main::@3 main::@4 @begin @14 +main::@1 dominated by main main::@1 main::@3 main::@4 @begin @14 +lines dominated by main main::@1 main::@3 main::@4 @begin lines @14 +lines::@1 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 lines @14 +lines::@3 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 lines::@3 lines @14 +lines::@return dominated by main main::@1 main::@3 main::@4 @begin lines::@return lines::@1 lines::@3 lines @14 +bitmap_line dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @14 +bitmap_line::@15 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@15 lines::@1 bitmap_line lines @14 +bitmap_line::@16 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@16 bitmap_line::@15 lines::@1 bitmap_line lines @14 +bitmap_line::@17 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@17 bitmap_line::@16 bitmap_line::@15 lines::@1 bitmap_line lines @14 +bitmap_line::@return dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@return lines::@1 bitmap_line lines @14 +bitmap_line::@3 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@16 bitmap_line::@15 lines::@1 bitmap_line::@3 bitmap_line lines @14 +bitmap_line::@2 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@15 lines::@1 bitmap_line::@2 bitmap_line lines @14 +bitmap_line::@20 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@15 bitmap_line::@20 lines::@1 bitmap_line::@2 bitmap_line lines @14 +bitmap_line::@6 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@15 lines::@1 bitmap_line::@2 bitmap_line::@6 bitmap_line lines @14 +bitmap_line::@1 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line::@1 bitmap_line lines @14 +bitmap_line::@23 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@23 lines::@1 bitmap_line::@1 bitmap_line lines @14 +bitmap_line::@24 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line::@24 bitmap_line::@23 lines::@1 bitmap_line::@1 bitmap_line lines @14 +bitmap_line::@10 dominated by main bitmap_line::@10 main::@1 main::@3 main::@4 @begin bitmap_line::@23 lines::@1 bitmap_line::@1 bitmap_line lines @14 +bitmap_line::@9 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line::@1 bitmap_line::@9 bitmap_line lines @14 +bitmap_line::@27 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line::@1 bitmap_line::@27 bitmap_line::@9 bitmap_line lines @14 +bitmap_line::@13 dominated by main bitmap_line::@13 main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line::@1 bitmap_line::@9 bitmap_line lines @14 +bitmap_line_xdyi dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @14 bitmap_line_xdyi +bitmap_line_xdyi::@1 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @14 bitmap_line_xdyi bitmap_line_xdyi::@1 +bitmap_line_xdyi::@5 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @14 bitmap_line_xdyi bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 +bitmap_line_xdyi::@3 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @14 bitmap_line_xdyi bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@1 +bitmap_line_xdyi::@2 dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @14 bitmap_line_xdyi bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 +bitmap_line_xdyi::@return dominated by main bitmap_line_xdyi::@return main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @14 bitmap_line_xdyi bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 +bitmap_plot dominated by main main::@1 main::@3 main::@4 @begin bitmap_plot lines::@1 bitmap_line lines @14 +bitmap_plot::@return dominated by main main::@1 main::@3 main::@4 @begin bitmap_plot bitmap_plot::@return lines::@1 bitmap_line lines @14 +bitmap_line_ydxi dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxi lines::@1 bitmap_line lines @14 +bitmap_line_ydxi::@1 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxi lines::@1 bitmap_line lines @14 bitmap_line_ydxi::@1 +bitmap_line_ydxi::@5 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxi lines::@1 bitmap_line lines @14 bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 +bitmap_line_ydxi::@3 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxi lines::@1 bitmap_line lines @14 bitmap_line_ydxi::@3 bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 +bitmap_line_ydxi::@2 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxi lines::@1 bitmap_line lines @14 bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 bitmap_line_ydxi::@5 +bitmap_line_ydxi::@return dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxi bitmap_line_ydxi::@return lines::@1 bitmap_line lines @14 bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 bitmap_line_ydxi::@5 +bitmap_line_xdyd dominated by main main::@1 main::@3 main::@4 @begin lines::@1 bitmap_line lines @14 bitmap_line_xdyd +bitmap_line_xdyd::@1 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_xdyd::@1 lines::@1 bitmap_line lines @14 bitmap_line_xdyd +bitmap_line_xdyd::@5 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_xdyd::@5 bitmap_line_xdyd::@1 lines::@1 bitmap_line lines @14 bitmap_line_xdyd +bitmap_line_xdyd::@3 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@1 lines::@1 bitmap_line lines @14 bitmap_line_xdyd +bitmap_line_xdyd::@2 dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 lines::@1 bitmap_line lines @14 bitmap_line_xdyd +bitmap_line_xdyd::@return dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 lines::@1 bitmap_line bitmap_line_xdyd::@return lines @14 bitmap_line_xdyd +bitmap_line_ydxd dominated by main main::@1 main::@3 main::@4 @begin bitmap_line_ydxd lines::@1 bitmap_line lines @14 +bitmap_line_ydxd::@1 dominated by main main::@1 main::@3 main::@4 bitmap_line_ydxd::@1 @begin bitmap_line_ydxd lines::@1 bitmap_line lines @14 +bitmap_line_ydxd::@5 dominated by main main::@1 bitmap_line_ydxd::@5 main::@3 main::@4 bitmap_line_ydxd::@1 @begin bitmap_line_ydxd lines::@1 bitmap_line lines @14 +bitmap_line_ydxd::@3 dominated by main main::@1 bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 main::@3 main::@4 bitmap_line_ydxd::@1 @begin bitmap_line_ydxd lines::@1 bitmap_line lines @14 +bitmap_line_ydxd::@2 dominated by main main::@1 bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 main::@3 main::@4 bitmap_line_ydxd::@1 @begin bitmap_line_ydxd lines::@1 bitmap_line lines @14 +bitmap_line_ydxd::@return dominated by main main::@1 bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 main::@3 main::@4 bitmap_line_ydxd::@1 @begin bitmap_line_ydxd bitmap_line_ydxd::@return lines::@1 bitmap_line lines @14 +init_screen dominated by main main::@3 main::@4 @begin init_screen @14 +init_screen::@1 dominated by main main::@3 main::@4 @begin init_screen init_screen::@1 @14 +init_screen::@return dominated by main main::@3 main::@4 @begin init_screen init_screen::@1 @14 init_screen::@return +bitmap_clear dominated by main main::@3 @begin bitmap_clear @14 +bitmap_clear::@1 dominated by main main::@3 bitmap_clear::@1 @begin bitmap_clear @14 +bitmap_clear::@2 dominated by main main::@3 bitmap_clear::@1 bitmap_clear::@2 @begin bitmap_clear @14 +bitmap_clear::@3 dominated by bitmap_clear::@3 main main::@3 bitmap_clear::@1 bitmap_clear::@2 @begin bitmap_clear @14 +bitmap_clear::@return dominated by bitmap_clear::@3 main main::@3 bitmap_clear::@1 bitmap_clear::@2 @begin bitmap_clear::@return bitmap_clear @14 +bitmap_init dominated by main @begin @14 bitmap_init +bitmap_init::@1 dominated by main @begin bitmap_init::@1 @14 bitmap_init +bitmap_init::@2 dominated by main @begin bitmap_init::@2 bitmap_init::@1 @14 bitmap_init +bitmap_init::@3 dominated by main @begin bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 @14 bitmap_init +bitmap_init::@7 dominated by main @begin bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@7 @14 bitmap_init +bitmap_init::@4 dominated by main @begin bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 @14 bitmap_init +bitmap_init::@return dominated by main @begin bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 bitmap_init::@return @14 bitmap_init +bitmap_init::@10 dominated by main @begin bitmap_init::@10 bitmap_init::@1 @14 bitmap_init NATURAL LOOPS Found back edge: Loop head: main::@1 tails: main::@1 blocks: null @@ -4331,15 +4435,15 @@ INITIAL ASM .const lines_cnt = 8 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] -b11_from_bbegin: - jmp b11 -//SEG4 @11 -b11: +//SEG3 [1] phi from @begin to @14 [phi:@begin->@14] +b14_from_bbegin: + jmp b14 +//SEG4 @14 +b14: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @11 to @end [phi:@11->@end] -bend_from_b11: +//SEG6 [3] phi from @14 to @end [phi:@14->@end] +bend_from_b14: jmp bend //SEG7 @end bend: @@ -5746,15 +5850,15 @@ ASSEMBLER BEFORE OPTIMIZATION .const lines_cnt = 8 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] -b11_from_bbegin: - jmp b11 -//SEG4 @11 -b11: +//SEG3 [1] phi from @begin to @14 [phi:@begin->@14] +b14_from_bbegin: + jmp b14 +//SEG4 @14 +b14: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @11 to @end [phi:@11->@end] -bend_from_b11: +//SEG6 [3] phi from @14 to @end [phi:@14->@end] +bend_from_b14: jmp bend //SEG7 @end bend: @@ -6701,7 +6805,7 @@ bitmap_init: { lines_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28, $a ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b11 +Removing instruction jmp b14 Removing instruction jmp bend Removing instruction jmp b3 Removing instruction jmp b4 @@ -6783,8 +6887,8 @@ Replacing label b1_from_b2 with b1 Replacing label b4_from_b3 with b4 Replacing label b3_from_b4 with b3 Removing instruction bbegin: -Removing instruction b11_from_bbegin: -Removing instruction bend_from_b11: +Removing instruction b14_from_bbegin: +Removing instruction bend_from_b14: Removing instruction b3_from_main: Removing instruction b4_from_b3: Removing instruction init_screen_from_b4: @@ -6819,7 +6923,7 @@ Removing instruction b4_from_b7: Removing instruction b10_from_b1: Removing instruction b2_from_b10: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b11: +Removing instruction b14: Removing instruction bend: Removing instruction bitmap_init_from_main: Removing instruction b3: @@ -6887,7 +6991,7 @@ Removing unreachable instruction jmp b2 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @11 +(label) @14 (label) @begin (label) @end (byte*) BGCOL @@ -7242,11 +7346,11 @@ Score: 221049 .label BITMAP = $2000 .const lines_cnt = 8 //SEG2 @begin -//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] -//SEG4 @11 +//SEG3 [1] phi from @begin to @14 [phi:@begin->@14] +//SEG4 @14 //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @11 to @end [phi:@11->@end] +//SEG6 [3] phi from @14 to @end [phi:@14->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.sym b/src/test/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.sym index 10c9ed862..4fe89b06e 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.sym @@ -1,4 +1,4 @@ -(label) @11 +(label) @14 (label) @begin (label) @end (byte*) BGCOL diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.cfg b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.cfg index 8b1026303..fef9b15fe 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@5 -@5: scope:[] from @begin + to:@8 +@8: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @5 +@end: scope:[] from @8 [3] phi() [ ] ( ) -main: scope:[main] from @5 +main: scope:[main] from @8 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.log b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.log index a289fcd3e..ea2c797f9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.log @@ -402,6 +402,24 @@ const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + Adding pre/post-modifier (byte*) gfx_init_screen0::ch ← ++ (byte*) gfx_init_screen0::ch Adding pre/post-modifier (byte) gfx_init_plane_charset8::gfxbCpuBank ← ++ (byte) gfx_init_plane_charset8::gfxbCpuBank Adding pre/post-modifier (byte*) gfx_init_plane_charset8::chargen ← ++ (byte*) gfx_init_plane_charset8::chargen @@ -413,6 +431,9 @@ SYMBOLS (label) @3 (label) @4 (label) @5 +(label) @6 +(label) @7 +(label) @8 (label) @begin (label) @end (byte*) BGCOL @@ -692,6 +713,34 @@ SYMBOLS (label) main::@return (byte) main::j (byte) main::rst +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 @@ -850,6 +899,51 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 (byte*) DTV_FEATURE ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) DTV_FEATURE_DISABLE_TIL_RESET ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -881,7 +975,7 @@ INITIAL CONTROL FLOW GRAPH (dword) DTV_COLOR_BANK_DEFAULT ← (dword/signed dword) 120832 (byte*) DTV_GRAPHICS_VIC_BANK ← ((byte*)) (word/dword/signed dword) 53309 (byte*) DTV_GRAPHICS_HICOL_BANK ← ((byte*)) (word/dword/signed dword) 53310 - to:@1 + to:@4 dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from (byte*) dtvSetCpuBankSegment1::cpuBank ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 *((byte*) dtvSetCpuBankSegment1::cpuBank) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx @@ -890,7 +984,7 @@ dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 return to:@return -@1: scope:[] from @begin +@4: scope:[] from @3 (byte*) DTV_BLITTER_SRCA_LO ← ((byte*)) (word/dword/signed dword) 54048 (byte*) DTV_BLITTER_SRCA_MI ← ((byte*)) (word/dword/signed dword) 54049 (byte*) DTV_BLITTER_SRCA_HI ← ((byte*)) (word/dword/signed dword) 54050 @@ -957,7 +1051,7 @@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBan (byte) DTV_BLIT_STATUS_IRQ ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 31744 (byte*) CHARSET8 ← ((byte*)) (word/dword/signed dword) 32768 - to:@2 + to:@5 main: scope:[main] from asm { sei } *((byte*) PROCPORT_DDR) ← (byte) PROCPORT_DDR_MEMORY_MASK @@ -1069,8 +1163,8 @@ main::@16: scope:[main] from main::@return: scope:[main] from main::@4 return to:@return -@2: scope:[] from @1 - to:@3 +@5: scope:[] from @4 + to:@6 gfx_init: scope:[gfx_init] from (void~) gfx_init::$0 ← call gfx_init_screen0 (void~) gfx_init::$1 ← call gfx_init_plane_charset8 @@ -1078,8 +1172,8 @@ gfx_init: scope:[gfx_init] from gfx_init::@return: scope:[gfx_init] from gfx_init return to:@return -@3: scope:[] from @2 - to:@4 +@6: scope:[] from @5 + to:@7 gfx_init_screen0: scope:[gfx_init_screen0] from (byte*) gfx_init_screen0::ch ← (byte*) SCREEN (byte) gfx_init_screen0::cy ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1108,8 +1202,8 @@ gfx_init_screen0::@4: scope:[gfx_init_screen0] from gfx_init_screen0::@3 gfx_init_screen0::@return: scope:[gfx_init_screen0] from gfx_init_screen0::@4 return to:@return -@4: scope:[] from @3 - to:@5 +@7: scope:[] from @6 + to:@8 gfx_init_plane_charset8: scope:[gfx_init_plane_charset8] from (byte*~) gfx_init_plane_charset8::$0 ← (byte*) CHARSET8 / (word/signed word/dword/signed dword) 16384 (byte~) gfx_init_plane_charset8::$1 ← ((byte)) (byte*~) gfx_init_plane_charset8::$0 @@ -1173,11 +1267,15 @@ gfx_init_plane_charset8::@8: scope:[gfx_init_plane_charset8] from gfx_init_plan gfx_init_plane_charset8::@return: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@8 return to:@return -@5: scope:[] from @4 +@8: scope:[] from @7 call main to:@end -@end: scope:[] from @5 +@end: scope:[] from @8 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Eliminating unused variable (byte) PROCPORT_RAM_ALL and assignment [3] (byte) PROCPORT_RAM_ALL ← (byte/signed byte/word/signed word/dword/signed dword) 48 Eliminating unused variable (byte) PROCPORT_KERNEL_IO and assignment [6] (byte) PROCPORT_KERNEL_IO ← (byte/signed byte/word/signed word/dword/signed dword) 54 Eliminating unused variable (byte) PROCPORT_BASIC_KERNEL_IO and assignment [7] (byte) PROCPORT_BASIC_KERNEL_IO ← (byte/signed byte/word/signed word/dword/signed dword) 55 @@ -1305,6 +1403,8 @@ Eliminating unused variable - keeping the call (void~) gfx_init::$0 Eliminating unused variable - keeping the call (void~) gfx_init::$1 Eliminating unused variable - keeping the call (void~) gfx_init_plane_charset8::$2 Eliminating unused variable - keeping the call (void~) gfx_init_plane_charset8::$16 +Removing empty block @1 +Removing empty block @2 Removing empty block main::@9 Removing empty block main::@10 Removing empty block main::@4 @@ -1314,10 +1414,10 @@ Removing empty block main::@13 Removing empty block main::@14 Removing empty block main::@15 Removing empty block main::@16 -Removing empty block @2 -Removing empty block @3 +Removing empty block @5 +Removing empty block @6 Removing empty block gfx_init_screen0::@4 -Removing empty block @4 +Removing empty block @7 PROCEDURE MODIFY VARIABLE ANALYSIS Completing Phi functions... @@ -1347,6 +1447,8 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + to:@3 +@3: scope:[] from @begin (byte*) DTV_FEATURE#0 ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) DTV_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53308 @@ -1367,7 +1469,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) DTV_PLANEB_STEP#0 ← ((byte*)) (word/dword/signed dword) 53324 (byte*) DTV_PLANEB_MODULO_LO#0 ← ((byte*)) (word/dword/signed dword) 53319 (byte*) DTV_PLANEB_MODULO_HI#0 ← ((byte*)) (word/dword/signed dword) 53320 - to:@1 + to:@4 dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_plane_charset8 gfx_init_plane_charset8::@8 (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 ← phi( gfx_init_plane_charset8/(byte) dtvSetCpuBankSegment1::cpuBankIdx#0 gfx_init_plane_charset8::@8/(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ) (byte*) dtvSetCpuBankSegment1::cpuBank#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 @@ -1377,11 +1479,11 @@ dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_plane_charse dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 return to:@return -@1: scope:[] from @begin +@4: scope:[] from @3 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 31744 (byte*) CHARSET8#0 ← ((byte*)) (word/dword/signed dword) 32768 - to:@5 -main: scope:[main] from @5 + to:@8 +main: scope:[main] from @8 asm { sei } *((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0 *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0 @@ -1633,17 +1735,18 @@ gfx_init_plane_charset8::@10: scope:[gfx_init_plane_charset8] from gfx_init_pla gfx_init_plane_charset8::@return: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@10 return to:@return -@5: scope:[] from @1 +@8: scope:[] from @4 call main - to:@6 -@6: scope:[] from @5 + to:@9 +@9: scope:[] from @8 to:@end -@end: scope:[] from @6 +@end: scope:[] from @9 SYMBOL TABLE SSA -(label) @1 -(label) @5 -(label) @6 +(label) @3 +(label) @4 +(label) @8 +(label) @9 (label) @begin (label) @end (byte*) BORDERCOL @@ -1918,7 +2021,7 @@ SYMBOL TABLE SSA OPTIMIZING CONTROL FLOW GRAPH Culled Empty Block (label) gfx_init::@2 Culled Empty Block (label) gfx_init_plane_charset8::@10 -Culled Empty Block (label) @6 +Culled Empty Block (label) @9 Succesful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) gfx_init_plane_charset8::$9 ← (byte~) gfx_init_plane_charset8::$7 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) gfx_init_plane_charset8::$8 ← (byte~) gfx_init_plane_charset8::$7 != (byte/signed byte/word/signed word/dword/signed dword) 0 Succesful SSA optimization Pass2UnaryNotSimplification @@ -2084,7 +2187,8 @@ Eliminating unused constant (const byte) gfx_init_plane_charset8::gfxbCpuBank#1 Succesful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Succesful SSA optimization Pass2EliminateUnusedBlocks -Culled Empty Block (label) @1 +Culled Empty Block (label) @3 +Culled Empty Block (label) @4 Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@6 Not culling empty block because it shares successor with its predecessor. (label) gfx_init_plane_charset8::@5 @@ -2176,16 +2280,16 @@ Constant inlined main::$7 = (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 Constant inlined main::$8 = <(const byte*) SCREEN#0 Constant inlined gfx_init_plane_charset8::$3 = ((word))(const byte*) CHARSET8#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @5 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 gfx_init gfx_init::@1 gfx_init::@return gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return +Block Sequence Planned @begin @8 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 gfx_init gfx_init::@1 gfx_init::@return gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return Added new block during phi lifting main::@18(between main::@1 and main::@1) Added new block during phi lifting gfx_init_plane_charset8::@11(between gfx_init_plane_charset8::@7 and gfx_init_plane_charset8::@1) Added new block during phi lifting gfx_init_plane_charset8::@12(between gfx_init_plane_charset8::@6 and gfx_init_plane_charset8::@2) Added new block during phi lifting gfx_init_plane_charset8::@13(between gfx_init_plane_charset8::@4 and gfx_init_plane_charset8::@3) Added new block during phi lifting gfx_init_screen0::@5(between gfx_init_screen0::@3 and gfx_init_screen0::@1) Added new block during phi lifting gfx_init_screen0::@6(between gfx_init_screen0::@2 and gfx_init_screen0::@2) -Block Sequence Planned @begin @5 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 main::@18 gfx_init gfx_init::@1 gfx_init::@return gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return gfx_init_plane_charset8::@11 gfx_init_plane_charset8::@12 gfx_init_plane_charset8::@13 dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return gfx_init_screen0::@5 gfx_init_screen0::@6 +Block Sequence Planned @begin @8 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 main::@18 gfx_init gfx_init::@1 gfx_init::@return gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return gfx_init_plane_charset8::@11 gfx_init_plane_charset8::@12 gfx_init_plane_charset8::@13 dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return gfx_init_screen0::@5 gfx_init_screen0::@6 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @5 +Adding NOP phi() at start of @8 Adding NOP phi() at start of @end Adding NOP phi() at start of gfx_init Adding NOP phi() at start of gfx_init::@1 @@ -2253,9 +2357,9 @@ Culled Empty Block (label) gfx_init_plane_charset8::@12 Culled Empty Block (label) gfx_init_plane_charset8::@13 Culled Empty Block (label) gfx_init_screen0::@5 Culled Empty Block (label) gfx_init_screen0::@6 -Block Sequence Planned @begin @5 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 gfx_init gfx_init::@1 gfx_init::@return gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return +Block Sequence Planned @begin @8 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 gfx_init gfx_init::@1 gfx_init::@return gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @5 +Adding NOP phi() at start of @8 Adding NOP phi() at start of @end Adding NOP phi() at start of gfx_init Adding NOP phi() at start of gfx_init::@1 @@ -2282,14 +2386,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@5 -@5: scope:[] from @begin + to:@8 +@8: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @5 +@end: scope:[] from @8 [3] phi() [ ] ( ) -main: scope:[main] from @5 +main: scope:[main] from @8 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) @@ -2447,36 +2551,36 @@ gfx_init_screen0::@return: scope:[gfx_init_screen0] from gfx_init_screen0::@3 DOMINATORS @begin dominated by @begin -@5 dominated by @begin @5 -@end dominated by @end @begin @5 -main dominated by main @begin @5 -main::@17 dominated by main @begin main::@17 @5 -main::@1 dominated by main main::@1 @begin main::@17 @5 -main::@3 dominated by main main::@1 main::@3 @begin main::@17 @5 -main::@5 dominated by main main::@1 main::@5 main::@3 @begin main::@17 @5 -main::@7 dominated by main::@7 main main::@1 main::@5 main::@3 @begin main::@17 @5 -main::@8 dominated by main::@7 main::@8 main main::@1 main::@5 main::@3 @begin main::@17 @5 -gfx_init dominated by main gfx_init @begin @5 -gfx_init::@1 dominated by main gfx_init gfx_init::@1 @begin @5 -gfx_init::@return dominated by main gfx_init gfx_init::@1 @begin gfx_init::@return @5 -gfx_init_plane_charset8 dominated by main gfx_init gfx_init::@1 gfx_init_plane_charset8 @begin @5 -gfx_init_plane_charset8::@9 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init::@1 gfx_init_plane_charset8 @begin @5 -gfx_init_plane_charset8::@1 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init::@1 gfx_init_plane_charset8 @begin @5 -gfx_init_plane_charset8::@2 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init::@1 gfx_init_plane_charset8 @begin @5 -gfx_init_plane_charset8::@3 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init::@1 gfx_init_plane_charset8 @begin @5 -gfx_init_plane_charset8::@5 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init::@1 gfx_init_plane_charset8 @begin @5 -gfx_init_plane_charset8::@4 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init::@1 gfx_init_plane_charset8 @begin @5 -gfx_init_plane_charset8::@6 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init::@1 gfx_init_plane_charset8 @begin @5 -gfx_init_plane_charset8::@7 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init::@1 gfx_init_plane_charset8 @begin @5 -gfx_init_plane_charset8::@8 dominated by gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init::@1 gfx_init_plane_charset8 @begin @5 -gfx_init_plane_charset8::@return dominated by gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init::@1 gfx_init_plane_charset8 @begin @5 gfx_init_plane_charset8::@return -dtvSetCpuBankSegment1 dominated by dtvSetCpuBankSegment1 main gfx_init gfx_init::@1 gfx_init_plane_charset8 @begin @5 -dtvSetCpuBankSegment1::@return dominated by dtvSetCpuBankSegment1 main gfx_init gfx_init::@1 gfx_init_plane_charset8 @begin dtvSetCpuBankSegment1::@return @5 -gfx_init_screen0 dominated by main gfx_init_screen0 gfx_init @begin @5 -gfx_init_screen0::@1 dominated by main gfx_init_screen0::@1 gfx_init_screen0 gfx_init @begin @5 -gfx_init_screen0::@2 dominated by main gfx_init_screen0::@2 gfx_init_screen0::@1 gfx_init_screen0 gfx_init @begin @5 -gfx_init_screen0::@3 dominated by gfx_init_screen0::@3 main gfx_init_screen0::@2 gfx_init_screen0::@1 gfx_init_screen0 gfx_init @begin @5 -gfx_init_screen0::@return dominated by gfx_init_screen0::@3 main gfx_init_screen0::@2 gfx_init_screen0::@1 gfx_init_screen0 gfx_init @begin gfx_init_screen0::@return @5 +@8 dominated by @begin @8 +@end dominated by @end @begin @8 +main dominated by main @begin @8 +main::@17 dominated by main @begin main::@17 @8 +main::@1 dominated by main main::@1 @begin main::@17 @8 +main::@3 dominated by main main::@1 main::@3 @begin main::@17 @8 +main::@5 dominated by main main::@1 main::@5 main::@3 @begin main::@17 @8 +main::@7 dominated by main::@7 main main::@1 main::@5 main::@3 @begin main::@17 @8 +main::@8 dominated by main::@7 main::@8 main main::@1 main::@5 main::@3 @begin main::@17 @8 +gfx_init dominated by main gfx_init @begin @8 +gfx_init::@1 dominated by main gfx_init gfx_init::@1 @begin @8 +gfx_init::@return dominated by main gfx_init gfx_init::@1 @begin gfx_init::@return @8 +gfx_init_plane_charset8 dominated by main gfx_init gfx_init::@1 gfx_init_plane_charset8 @begin @8 +gfx_init_plane_charset8::@9 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init::@1 gfx_init_plane_charset8 @begin @8 +gfx_init_plane_charset8::@1 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init::@1 gfx_init_plane_charset8 @begin @8 +gfx_init_plane_charset8::@2 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init::@1 gfx_init_plane_charset8 @begin @8 +gfx_init_plane_charset8::@3 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init::@1 gfx_init_plane_charset8 @begin @8 +gfx_init_plane_charset8::@5 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init::@1 gfx_init_plane_charset8 @begin @8 +gfx_init_plane_charset8::@4 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init::@1 gfx_init_plane_charset8 @begin @8 +gfx_init_plane_charset8::@6 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init::@1 gfx_init_plane_charset8 @begin @8 +gfx_init_plane_charset8::@7 dominated by gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init::@1 gfx_init_plane_charset8 @begin @8 +gfx_init_plane_charset8::@8 dominated by gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init::@1 gfx_init_plane_charset8 @begin @8 +gfx_init_plane_charset8::@return dominated by gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@9 main gfx_init gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init::@1 gfx_init_plane_charset8 @begin @8 gfx_init_plane_charset8::@return +dtvSetCpuBankSegment1 dominated by dtvSetCpuBankSegment1 main gfx_init gfx_init::@1 gfx_init_plane_charset8 @begin @8 +dtvSetCpuBankSegment1::@return dominated by dtvSetCpuBankSegment1 main gfx_init gfx_init::@1 gfx_init_plane_charset8 @begin dtvSetCpuBankSegment1::@return @8 +gfx_init_screen0 dominated by main gfx_init_screen0 gfx_init @begin @8 +gfx_init_screen0::@1 dominated by main gfx_init_screen0::@1 gfx_init_screen0 gfx_init @begin @8 +gfx_init_screen0::@2 dominated by main gfx_init_screen0::@2 gfx_init_screen0::@1 gfx_init_screen0 gfx_init @begin @8 +gfx_init_screen0::@3 dominated by gfx_init_screen0::@3 main gfx_init_screen0::@2 gfx_init_screen0::@1 gfx_init_screen0 gfx_init @begin @8 +gfx_init_screen0::@return dominated by gfx_init_screen0::@3 main gfx_init_screen0::@2 gfx_init_screen0::@1 gfx_init_screen0 gfx_init @begin gfx_init_screen0::@return @8 NATURAL LOOPS Found back edge: Loop head: main::@1 tails: main::@1 blocks: null @@ -2755,15 +2859,15 @@ INITIAL ASM .label CHARSET8 = $8000 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -b5_from_bbegin: - jmp b5 -//SEG4 @5 -b5: +//SEG3 [1] phi from @begin to @8 [phi:@begin->@8] +b8_from_bbegin: + jmp b8 +//SEG4 @8 +b8: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] -bend_from_b5: +//SEG6 [3] phi from @8 to @end [phi:@8->@end] +bend_from_b8: jmp bend //SEG7 @end bend: @@ -3502,15 +3606,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label CHARSET8 = $8000 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -b5_from_bbegin: - jmp b5 -//SEG4 @5 -b5: +//SEG3 [1] phi from @begin to @8 [phi:@begin->@8] +b8_from_bbegin: + jmp b8 +//SEG4 @8 +b8: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] -bend_from_b5: +//SEG6 [3] phi from @8 to @end [phi:@8->@end] +bend_from_b8: jmp bend //SEG7 @end bend: @@ -4006,7 +4110,7 @@ gfx_init_screen0: { } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b5 +Removing instruction jmp b8 Removing instruction jmp bend Removing instruction jmp b17 Removing instruction jmp b1 @@ -4045,8 +4149,8 @@ Replacing label b1_from_b7 with b1 Replacing label b2_from_b2 with b2 Replacing label b1_from_b3 with b1 Removing instruction bbegin: -Removing instruction b5_from_bbegin: -Removing instruction bend_from_b5: +Removing instruction b8_from_bbegin: +Removing instruction bend_from_b8: Removing instruction b1_from_b1: Removing instruction b1_from_gfx_init: Removing instruction gfx_init_plane_charset8_from_b1: @@ -4058,7 +4162,7 @@ Removing instruction b1_from_b3: Removing instruction b2_from_b1: Removing instruction b2_from_b2: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b5: +Removing instruction b8: Removing instruction bend: Removing instruction gfx_init_from_main: Removing instruction b17: @@ -4094,7 +4198,7 @@ Removing instruction jmp b2 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @5 +(label) @8 (label) @begin (label) @end (byte*) BORDERCOL @@ -4335,11 +4439,11 @@ Score: 75363 .label SCREEN = $7c00 .label CHARSET8 = $8000 //SEG2 @begin -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -//SEG4 @5 +//SEG3 [1] phi from @begin to @8 [phi:@begin->@8] +//SEG4 @8 //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] +//SEG6 [3] phi from @8 to @end [phi:@8->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.sym b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.sym index 58ea59a50..fadfe26b9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.sym @@ -1,4 +1,4 @@ -(label) @5 +(label) @8 (label) @begin (label) @end (byte*) BORDERCOL diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppchunkystretch.cfg b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppchunkystretch.cfg index 3a99ede72..bfc0e76f8 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppchunkystretch.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppchunkystretch.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@3 -@3: scope:[] from @begin + to:@6 +@6: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @3 +@end: scope:[] from @6 [3] phi() [ ] ( ) -main: scope:[main] from @3 +main: scope:[main] from @6 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppchunkystretch.log b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppchunkystretch.log index fa8dfea36..4dd658a86 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppchunkystretch.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppchunkystretch.log @@ -369,6 +369,24 @@ const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + Adding pre/post-modifier (byte) gfx_init_chunky::gfxbCpuBank ← ++ (byte) gfx_init_chunky::gfxbCpuBank Adding pre/post-modifier (byte) gfx_init_chunky::gfxbCpuBank ← ++ (byte) gfx_init_chunky::gfxbCpuBank Adding pre/post-modifier (byte*) gfx_init_chunky::gfxb ← ++ (byte*) gfx_init_chunky::gfxb @@ -376,6 +394,9 @@ SYMBOLS (label) @1 (label) @2 (label) @3 +(label) @4 +(label) @5 +(label) @6 (label) @begin (label) @end (byte*) BGCOL @@ -624,6 +645,34 @@ SYMBOLS (label) main::@return (byte) main::j (byte) main::rst +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 @@ -782,6 +831,51 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 (byte*) DTV_FEATURE ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) DTV_FEATURE_DISABLE_TIL_RESET ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -813,7 +907,7 @@ INITIAL CONTROL FLOW GRAPH (dword) DTV_COLOR_BANK_DEFAULT ← (dword/signed dword) 120832 (byte*) DTV_GRAPHICS_VIC_BANK ← ((byte*)) (word/dword/signed dword) 53309 (byte*) DTV_GRAPHICS_HICOL_BANK ← ((byte*)) (word/dword/signed dword) 53310 - to:@1 + to:@4 dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from (byte*) dtvSetCpuBankSegment1::cpuBank ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 *((byte*) dtvSetCpuBankSegment1::cpuBank) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx @@ -822,7 +916,7 @@ dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 return to:@return -@1: scope:[] from @begin +@4: scope:[] from @3 (byte*) DTV_BLITTER_SRCA_LO ← ((byte*)) (word/dword/signed dword) 54048 (byte*) DTV_BLITTER_SRCA_MI ← ((byte*)) (word/dword/signed dword) 54049 (byte*) DTV_BLITTER_SRCA_HI ← ((byte*)) (word/dword/signed dword) 54050 @@ -888,7 +982,7 @@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBan (byte) DTV_BLIT_STATUS_BUSY ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) DTV_BLIT_STATUS_IRQ ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) CHUNKY ← ((byte*)) (word/dword/signed dword) 32768 - to:@2 + to:@5 main: scope:[main] from asm { sei } *((byte*) PROCPORT_DDR) ← (byte) PROCPORT_DDR_MEMORY_MASK @@ -993,8 +1087,8 @@ main::@16: scope:[main] from main::@return: scope:[main] from main::@4 return to:@return -@2: scope:[] from @1 - to:@3 +@5: scope:[] from @4 + to:@6 gfx_init_chunky: scope:[gfx_init_chunky] from (byte*~) gfx_init_chunky::$0 ← (byte*) CHUNKY / (word/signed word/dword/signed dword) 16384 (byte~) gfx_init_chunky::$1 ← ((byte)) (byte*~) gfx_init_chunky::$0 @@ -1040,11 +1134,15 @@ gfx_init_chunky::@6: scope:[gfx_init_chunky] from gfx_init_chunky::@5 gfx_init_chunky::@return: scope:[gfx_init_chunky] from gfx_init_chunky::@6 return to:@return -@3: scope:[] from @2 +@6: scope:[] from @5 call main to:@end -@end: scope:[] from @3 +@end: scope:[] from @6 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Eliminating unused variable (byte) PROCPORT_RAM_ALL and assignment [3] (byte) PROCPORT_RAM_ALL ← (byte/signed byte/word/signed word/dword/signed dword) 48 Eliminating unused variable (byte) PROCPORT_RAM_CHARROM and assignment [5] (byte) PROCPORT_RAM_CHARROM ← (byte/signed byte/word/signed word/dword/signed dword) 49 Eliminating unused variable (byte) PROCPORT_KERNEL_IO and assignment [6] (byte) PROCPORT_KERNEL_IO ← (byte/signed byte/word/signed word/dword/signed dword) 54 @@ -1178,6 +1276,8 @@ Eliminating unused variable - keeping the call (void~) main::$0 Eliminating unused variable - keeping the call (void~) gfx_init_chunky::$2 Eliminating unused variable - keeping the call (void~) gfx_init_chunky::$5 Eliminating unused variable - keeping the call (void~) gfx_init_chunky::$12 +Removing empty block @1 +Removing empty block @2 Removing empty block main::@9 Removing empty block main::@10 Removing empty block main::@4 @@ -1187,7 +1287,7 @@ Removing empty block main::@13 Removing empty block main::@14 Removing empty block main::@15 Removing empty block main::@16 -Removing empty block @2 +Removing empty block @5 PROCEDURE MODIFY VARIABLE ANALYSIS Completing Phi functions... @@ -1213,6 +1313,8 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + to:@3 +@3: scope:[] from @begin (byte*) DTV_FEATURE#0 ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) DTV_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53308 @@ -1228,7 +1330,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) DTV_PLANEB_STEP#0 ← ((byte*)) (word/dword/signed dword) 53324 (byte*) DTV_PLANEB_MODULO_LO#0 ← ((byte*)) (word/dword/signed dword) 53319 (byte*) DTV_PLANEB_MODULO_HI#0 ← ((byte*)) (word/dword/signed dword) 53320 - to:@1 + to:@4 dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_chunky gfx_init_chunky::@4 gfx_init_chunky::@6 (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 ← phi( gfx_init_chunky/(byte) dtvSetCpuBankSegment1::cpuBankIdx#0 gfx_init_chunky::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 gfx_init_chunky::@6/(byte) dtvSetCpuBankSegment1::cpuBankIdx#2 ) (byte*) dtvSetCpuBankSegment1::cpuBank#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 @@ -1238,10 +1340,10 @@ dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_chunky gfx_i dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 return to:@return -@1: scope:[] from @begin +@4: scope:[] from @3 (byte*) CHUNKY#0 ← ((byte*)) (word/dword/signed dword) 32768 - to:@3 -main: scope:[main] from @3 + to:@6 +main: scope:[main] from @6 asm { sei } *((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0 *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0 @@ -1407,17 +1509,18 @@ gfx_init_chunky::@9: scope:[gfx_init_chunky] from gfx_init_chunky::@6 gfx_init_chunky::@return: scope:[gfx_init_chunky] from gfx_init_chunky::@9 return to:@return -@3: scope:[] from @1 +@6: scope:[] from @4 call main - to:@4 -@4: scope:[] from @3 + to:@7 +@7: scope:[] from @6 to:@end -@end: scope:[] from @4 +@end: scope:[] from @7 SYMBOL TABLE SSA -(label) @1 (label) @3 (label) @4 +(label) @6 +(label) @7 (label) @begin (label) @end (byte*) BORDERCOL @@ -1607,7 +1710,7 @@ SYMBOL TABLE SSA OPTIMIZING CONTROL FLOW GRAPH Culled Empty Block (label) gfx_init_chunky::@9 -Culled Empty Block (label) @4 +Culled Empty Block (label) @7 Succesful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) gfx_init_chunky::$4 ← (byte*) gfx_init_chunky::gfxb#3 != (word/dword/signed dword) 32768 from (bool~) gfx_init_chunky::$3 ← (byte*) gfx_init_chunky::gfxb#3 == (word/dword/signed dword) 32768 Succesful SSA optimization Pass2UnaryNotSimplification @@ -1730,7 +1833,8 @@ if() condition always true - replacing block destination if(true) goto main::@3 Succesful SSA optimization Pass2ConstantIfs Removing unused block main::@return Succesful SSA optimization Pass2EliminateUnusedBlocks -Culled Empty Block (label) @1 +Culled Empty Block (label) @3 +Culled Empty Block (label) @4 Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@6 Culled Empty Block (label) gfx_init_chunky::@7 @@ -1809,14 +1913,14 @@ Constant inlined main::$9 = <(const byte*) CHUNKY#0 Constant inlined main::$7 = (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 Constant inlined main::$8 = (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @3 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 gfx_init_chunky::@4 gfx_init_chunky::@8 gfx_init_chunky::@3 gfx_init_chunky::@5 gfx_init_chunky::@6 gfx_init_chunky::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return +Block Sequence Planned @begin @6 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 gfx_init_chunky::@4 gfx_init_chunky::@8 gfx_init_chunky::@3 gfx_init_chunky::@5 gfx_init_chunky::@6 gfx_init_chunky::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return Added new block during phi lifting main::@18(between main::@1 and main::@1) Added new block during phi lifting gfx_init_chunky::@10(between gfx_init_chunky::@5 and gfx_init_chunky::@1) Added new block during phi lifting gfx_init_chunky::@11(between gfx_init_chunky::@3 and gfx_init_chunky::@2) Added new block during phi lifting gfx_init_chunky::@12(between gfx_init_chunky::@2 and gfx_init_chunky::@3) -Block Sequence Planned @begin @3 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 main::@18 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 gfx_init_chunky::@4 gfx_init_chunky::@8 gfx_init_chunky::@3 gfx_init_chunky::@5 gfx_init_chunky::@6 gfx_init_chunky::@return gfx_init_chunky::@10 gfx_init_chunky::@11 gfx_init_chunky::@12 dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return +Block Sequence Planned @begin @6 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 main::@18 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 gfx_init_chunky::@4 gfx_init_chunky::@8 gfx_init_chunky::@3 gfx_init_chunky::@5 gfx_init_chunky::@6 gfx_init_chunky::@return gfx_init_chunky::@10 gfx_init_chunky::@11 gfx_init_chunky::@12 dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @3 +Adding NOP phi() at start of @6 Adding NOP phi() at start of @end Adding NOP phi() at start of gfx_init_chunky Adding NOP phi() at start of gfx_init_chunky::@6 @@ -1854,9 +1958,9 @@ Culled Empty Block (label) main::@18 Culled Empty Block (label) gfx_init_chunky::@10 Culled Empty Block (label) gfx_init_chunky::@11 Culled Empty Block (label) gfx_init_chunky::@12 -Block Sequence Planned @begin @3 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 gfx_init_chunky::@4 gfx_init_chunky::@8 gfx_init_chunky::@3 gfx_init_chunky::@5 gfx_init_chunky::@6 gfx_init_chunky::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return +Block Sequence Planned @begin @6 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 gfx_init_chunky::@4 gfx_init_chunky::@8 gfx_init_chunky::@3 gfx_init_chunky::@5 gfx_init_chunky::@6 gfx_init_chunky::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @3 +Adding NOP phi() at start of @6 Adding NOP phi() at start of @end Adding NOP phi() at start of gfx_init_chunky Adding NOP phi() at start of gfx_init_chunky::@6 @@ -1871,14 +1975,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@3 -@3: scope:[] from @begin + to:@6 +@6: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @3 +@end: scope:[] from @6 [3] phi() [ ] ( ) -main: scope:[main] from @3 +main: scope:[main] from @6 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) @@ -1980,26 +2084,26 @@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBan DOMINATORS @begin dominated by @begin -@3 dominated by @begin @3 -@end dominated by @begin @end @3 -main dominated by @begin main @3 -main::@17 dominated by @begin main::@17 main @3 -main::@1 dominated by @begin main::@17 main @3 main::@1 -main::@3 dominated by @begin main::@17 main @3 main::@1 main::@3 -main::@5 dominated by @begin main::@17 main @3 main::@1 main::@5 main::@3 -main::@7 dominated by main::@7 @begin main::@17 main @3 main::@1 main::@5 main::@3 -main::@8 dominated by main::@7 @begin main::@8 main::@17 main @3 main::@1 main::@5 main::@3 -gfx_init_chunky dominated by @begin main @3 gfx_init_chunky -gfx_init_chunky::@1 dominated by @begin main @3 gfx_init_chunky gfx_init_chunky::@1 -gfx_init_chunky::@2 dominated by @begin main @3 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 -gfx_init_chunky::@4 dominated by @begin main @3 gfx_init_chunky::@4 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 -gfx_init_chunky::@8 dominated by @begin main @3 gfx_init_chunky::@4 gfx_init_chunky gfx_init_chunky::@8 gfx_init_chunky::@1 gfx_init_chunky::@2 -gfx_init_chunky::@3 dominated by @begin main gfx_init_chunky::@3 @3 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 -gfx_init_chunky::@5 dominated by @begin main gfx_init_chunky::@5 gfx_init_chunky::@3 @3 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 -gfx_init_chunky::@6 dominated by @begin main gfx_init_chunky::@5 gfx_init_chunky::@6 gfx_init_chunky::@3 @3 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 -gfx_init_chunky::@return dominated by @begin main gfx_init_chunky::@return gfx_init_chunky::@5 gfx_init_chunky::@6 gfx_init_chunky::@3 @3 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 -dtvSetCpuBankSegment1 dominated by @begin dtvSetCpuBankSegment1 main @3 gfx_init_chunky -dtvSetCpuBankSegment1::@return dominated by @begin dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return main @3 gfx_init_chunky +@6 dominated by @begin @6 +@end dominated by @begin @end @6 +main dominated by @begin main @6 +main::@17 dominated by @begin main::@17 main @6 +main::@1 dominated by @begin main::@17 main @6 main::@1 +main::@3 dominated by @begin main::@17 main @6 main::@1 main::@3 +main::@5 dominated by @begin main::@17 main @6 main::@1 main::@5 main::@3 +main::@7 dominated by main::@7 @begin main::@17 main @6 main::@1 main::@5 main::@3 +main::@8 dominated by main::@7 @begin main::@8 main::@17 main @6 main::@1 main::@5 main::@3 +gfx_init_chunky dominated by @begin main @6 gfx_init_chunky +gfx_init_chunky::@1 dominated by @begin main @6 gfx_init_chunky gfx_init_chunky::@1 +gfx_init_chunky::@2 dominated by @begin main @6 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 +gfx_init_chunky::@4 dominated by @begin main gfx_init_chunky::@4 @6 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 +gfx_init_chunky::@8 dominated by @begin main gfx_init_chunky::@4 @6 gfx_init_chunky gfx_init_chunky::@8 gfx_init_chunky::@1 gfx_init_chunky::@2 +gfx_init_chunky::@3 dominated by @begin main gfx_init_chunky::@3 @6 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 +gfx_init_chunky::@5 dominated by @begin main gfx_init_chunky::@5 gfx_init_chunky::@3 @6 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 +gfx_init_chunky::@6 dominated by @begin main gfx_init_chunky::@5 gfx_init_chunky::@6 gfx_init_chunky::@3 @6 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 +gfx_init_chunky::@return dominated by @begin main gfx_init_chunky::@return gfx_init_chunky::@5 gfx_init_chunky::@6 gfx_init_chunky::@3 @6 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 +dtvSetCpuBankSegment1 dominated by @begin dtvSetCpuBankSegment1 main @6 gfx_init_chunky +dtvSetCpuBankSegment1::@return dominated by @begin dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return main @6 gfx_init_chunky NATURAL LOOPS Found back edge: Loop head: main::@1 tails: main::@1 blocks: null @@ -2187,15 +2291,15 @@ INITIAL ASM .label CHUNKY = $8000 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -b3_from_bbegin: - jmp b3 -//SEG4 @3 -b3: +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +b6_from_bbegin: + jmp b6 +//SEG4 @6 +b6: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @3 to @end [phi:@3->@end] -bend_from_b3: +//SEG6 [3] phi from @6 to @end [phi:@6->@end] +bend_from_b6: jmp bend //SEG7 @end bend: @@ -2712,15 +2816,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label CHUNKY = $8000 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -b3_from_bbegin: - jmp b3 -//SEG4 @3 -b3: +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +b6_from_bbegin: + jmp b6 +//SEG4 @6 +b6: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @3 to @end [phi:@3->@end] -bend_from_b3: +//SEG6 [3] phi from @6 to @end [phi:@6->@end] +bend_from_b6: jmp bend //SEG7 @end bend: @@ -3077,7 +3181,7 @@ dtvSetCpuBankSegment1: { } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b3 +Removing instruction jmp b6 Removing instruction jmp bend Removing instruction jmp b17 Removing instruction jmp b1 @@ -3105,8 +3209,8 @@ Replacing label b2_from_b3 with b2 Replacing label b2_from_b3 with b2 Replacing label b1_from_b5 with b1 Removing instruction bbegin: -Removing instruction b3_from_bbegin: -Removing instruction bend_from_b3: +Removing instruction b6_from_bbegin: +Removing instruction bend_from_b6: Removing instruction b1_from_b1: Removing instruction b1_from_b5: Removing instruction b2_from_b1: @@ -3115,7 +3219,7 @@ Removing instruction b3_from_b2: Removing instruction b6_from_b5: Removing instruction dtvSetCpuBankSegment1_from_b6: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b3: +Removing instruction b6: Removing instruction bend: Removing instruction gfx_init_chunky_from_main: Removing instruction b17: @@ -3139,7 +3243,7 @@ Removing instruction jmp b3 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @3 +(label) @6 (label) @begin (label) @end (byte*) BORDERCOL @@ -3312,11 +3416,11 @@ Score: 19888 .label DTV_PLANEB_MODULO_HI = $d048 .label CHUNKY = $8000 //SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 @6 //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @3 to @end [phi:@3->@end] +//SEG6 [3] phi from @6 to @end [phi:@6->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppchunkystretch.sym b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppchunkystretch.sym index cc6e831e7..d5ff06ec9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppchunkystretch.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppchunkystretch.sym @@ -1,4 +1,4 @@ -(label) @3 +(label) @6 (label) @begin (label) @end (byte*) BORDERCOL diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-blittermin.cfg b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-blittermin.cfg index 916480aab..02e70b85a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-blittermin.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-blittermin.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@2 -@2: scope:[] from @begin + to:@5 +@5: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @2 +@end: scope:[] from @5 [3] phi() [ ] ( ) -main: scope:[main] from @2 +main: scope:[main] from @5 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 [ ] ( main:2 [ ] ) [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-blittermin.log b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-blittermin.log index 251c694d8..52150251d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-blittermin.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-blittermin.log @@ -344,9 +344,30 @@ const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + SYMBOLS (label) @1 (label) @2 +(label) @3 +(label) @4 +(label) @5 (label) @begin (label) @end (byte*) BGCOL @@ -545,6 +566,34 @@ SYMBOLS (label) main::@4 (label) main::@return (byte) main::r +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 @@ -701,6 +750,51 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 (byte*) DTV_FEATURE ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) DTV_FEATURE_DISABLE_TIL_RESET ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -732,7 +826,7 @@ INITIAL CONTROL FLOW GRAPH (dword) DTV_COLOR_BANK_DEFAULT ← (dword/signed dword) 120832 (byte*) DTV_GRAPHICS_VIC_BANK ← ((byte*)) (word/dword/signed dword) 53309 (byte*) DTV_GRAPHICS_HICOL_BANK ← ((byte*)) (word/dword/signed dword) 53310 - to:@1 + to:@4 dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from (byte*) dtvSetCpuBankSegment1::cpuBank ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 *((byte*) dtvSetCpuBankSegment1::cpuBank) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx @@ -741,7 +835,7 @@ dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 return to:@return -@1: scope:[] from @begin +@4: scope:[] from @3 (byte*) DTV_BLITTER_SRCA_LO ← ((byte*)) (word/dword/signed dword) 54048 (byte*) DTV_BLITTER_SRCA_MI ← ((byte*)) (word/dword/signed dword) 54049 (byte*) DTV_BLITTER_SRCA_HI ← ((byte*)) (word/dword/signed dword) 54050 @@ -810,7 +904,7 @@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBan (byte[]) SRCA ← { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' } (byte) SRCA_LEN ← (byte/signed byte/word/signed word/dword/signed dword) 9 (byte[]) SRCB ← { (byte/word/signed word/dword/signed dword) 128 } - to:@2 + to:@5 main: scope:[main] from *((byte*) DTV_FEATURE) ← (byte) DTV_FEATURE_ENABLE *((byte*) DTV_BLITTER_CONTROL2) ← (byte) DTV_BLIT_CLEAR_IRQ @@ -882,11 +976,15 @@ main::@4: scope:[main] from main::@3 main::@return: scope:[main] from main::@4 return to:@return -@2: scope:[] from @1 +@5: scope:[] from @4 call main to:@end -@end: scope:[] from @2 +@end: scope:[] from @5 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Removing unused procedure dtvSetCpuBankSegment1 Eliminating unused variable (byte*) PROCPORT_DDR and assignment [0] (byte*) PROCPORT_DDR ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 Eliminating unused variable (byte) PROCPORT_DDR_MEMORY_MASK and assignment [1] (byte) PROCPORT_DDR_MEMORY_MASK ← (byte/signed byte/word/signed word/dword/signed dword) 7 @@ -1007,6 +1105,8 @@ Eliminating unused variable (byte) DTV_BLIT_SUB and assignment [152] (byte) DTV_ Eliminating unused variable (byte) DTV_BLIT_SRCA_CONT and assignment [155] (byte) DTV_BLIT_SRCA_CONT ← (byte/signed byte/word/signed word/dword/signed dword) 2 Eliminating unused variable (byte) DTV_BLIT_SRCB_CONT and assignment [156] (byte) DTV_BLIT_SRCB_CONT ← (byte/signed byte/word/signed word/dword/signed dword) 4 Eliminating unused variable (byte) DTV_BLIT_STATUS_IRQ and assignment [159] (byte) DTV_BLIT_STATUS_IRQ ← (byte/signed byte/word/signed word/dword/signed dword) 2 +Removing empty block @1 +Removing empty block @2 Removing empty block main::@4 PROCEDURE MODIFY VARIABLE ANALYSIS @@ -1016,10 +1116,12 @@ Completing Phi functions... CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from + to:@3 +@3: scope:[] from @begin (byte*) DTV_FEATURE#0 ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:@1 -@1: scope:[] from @begin + to:@4 +@4: scope:[] from @3 (byte*) DTV_BLITTER_SRCA_LO#0 ← ((byte*)) (word/dword/signed dword) 54048 (byte*) DTV_BLITTER_SRCA_MI#0 ← ((byte*)) (word/dword/signed dword) 54049 (byte*) DTV_BLITTER_SRCA_HI#0 ← ((byte*)) (word/dword/signed dword) 54050 @@ -1063,9 +1165,9 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte[]) SRCA#0 ← { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' } (byte) SRCA_LEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 (byte[]) SRCB#0 ← { (byte/word/signed word/dword/signed dword) 128 } - to:@2 -main: scope:[main] from @2 - (byte*) DTV_BLITTER_ALU#1 ← phi( @2/(byte*) DTV_BLITTER_ALU#2 ) + to:@5 +main: scope:[main] from @5 + (byte*) DTV_BLITTER_ALU#1 ← phi( @5/(byte*) DTV_BLITTER_ALU#2 ) *((byte*) DTV_FEATURE#0) ← (byte) DTV_FEATURE_ENABLE#0 *((byte*) DTV_BLITTER_CONTROL2#0) ← (byte) DTV_BLIT_CLEAR_IRQ#0 (byte~) main::$0 ← < (byte[]) SRCA#0 @@ -1137,18 +1239,19 @@ main::@3: scope:[main] from main::@2 main::@return: scope:[main] from main::@3 return to:@return -@2: scope:[] from @1 - (byte*) DTV_BLITTER_ALU#2 ← phi( @1/(byte*) DTV_BLITTER_ALU#0 ) +@5: scope:[] from @4 + (byte*) DTV_BLITTER_ALU#2 ← phi( @4/(byte*) DTV_BLITTER_ALU#0 ) call main - to:@3 -@3: scope:[] from @2 + to:@6 +@6: scope:[] from @5 to:@end -@end: scope:[] from @3 +@end: scope:[] from @6 SYMBOL TABLE SSA -(label) @1 -(label) @2 (label) @3 +(label) @4 +(label) @5 +(label) @6 (label) @begin (label) @end (byte*) DTV_BLITTER_ALU @@ -1277,7 +1380,7 @@ SYMBOL TABLE SSA (byte) main::r#4 OPTIMIZING CONTROL FLOW GRAPH -Culled Empty Block (label) @3 +Culled Empty Block (label) @6 Succesful SSA optimization Pass2CullEmptyBlocks Not aliassing across scopes: DTV_BLITTER_ALU#1 DTV_BLITTER_ALU#2 Alias (byte) main::r#1 = (byte) main::r#4 @@ -1360,7 +1463,8 @@ Succesful SSA optimization Pass2ConstantIdentification Constant (const byte) main::$14 = main::$13|DTV_BLIT_DEST_FWD#0 Constant (const byte) main::$19 = main::$18|DTV_BLIT_DEST_FWD#0 Succesful SSA optimization Pass2ConstantIdentification -Culled Empty Block (label) @1 +Culled Empty Block (label) @3 +Culled Empty Block (label) @4 Culled Empty Block (label) main::@1 Succesful SSA optimization Pass2CullEmptyBlocks OPTIMIZING CONTROL FLOW GRAPH @@ -1386,11 +1490,11 @@ Constant inlined main::$9 = >(const byte*) SCREEN#0 Constant inlined main::$7 = >(word/signed word/dword/signed dword) 256 Constant inlined main::$8 = <(const byte*) SCREEN#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @2 @end main main::@2 main::@3 main::@return +Block Sequence Planned @begin @5 @end main main::@2 main::@3 main::@return Added new block during phi lifting main::@5(between main::@3 and main::@2) -Block Sequence Planned @begin @2 @end main main::@2 main::@3 main::@return main::@5 +Block Sequence Planned @begin @5 @end main main::@2 main::@3 main::@return main::@5 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @2 +Adding NOP phi() at start of @5 Adding NOP phi() at start of @end CALL GRAPH Calls in [] to main:2 @@ -1404,9 +1508,9 @@ Created 1 initial phi equivalence classes Coalesced [43] main::r#5 ← main::r#1 Coalesced down to 1 phi equivalence classes Culled Empty Block (label) main::@5 -Block Sequence Planned @begin @2 @end main main::@2 main::@3 main::@return +Block Sequence Planned @begin @5 @end main main::@2 main::@3 main::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @2 +Adding NOP phi() at start of @5 Adding NOP phi() at start of @end Propagating live ranges... Propagating live ranges... @@ -1417,14 +1521,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@2 -@2: scope:[] from @begin + to:@5 +@5: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @2 +@end: scope:[] from @5 [3] phi() [ ] ( ) -main: scope:[main] from @2 +main: scope:[main] from @5 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 [ ] ( main:2 [ ] ) [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 [ ] ( main:2 [ ] ) @@ -1474,12 +1578,12 @@ main::@return: scope:[main] from main::@3 DOMINATORS @begin dominated by @begin -@2 dominated by @2 @begin -@end dominated by @2 @begin @end -main dominated by @2 @begin main -main::@2 dominated by @2 @begin main::@2 main -main::@3 dominated by @2 @begin main::@2 main main::@3 -main::@return dominated by main::@return @2 @begin main::@2 main main::@3 +@5 dominated by @begin @5 +@end dominated by @begin @5 @end +main dominated by @begin @5 main +main::@2 dominated by @begin @5 main::@2 main +main::@3 dominated by @begin @5 main::@2 main main::@3 +main::@return dominated by main::@return @begin @5 main::@2 main main::@3 NATURAL LOOPS Found back edge: Loop head: main::@2 tails: main::@2 blocks: null @@ -1610,15 +1714,15 @@ INITIAL ASM .const SRCA_LEN = 9 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -b2_from_bbegin: - jmp b2 -//SEG4 @2 -b2: +//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +b5_from_bbegin: + jmp b5 +//SEG4 @5 +b5: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -bend_from_b2: +//SEG6 [3] phi from @5 to @end [phi:@5->@end] +bend_from_b5: jmp bend //SEG7 @end bend: @@ -1896,15 +2000,15 @@ ASSEMBLER BEFORE OPTIMIZATION .const SRCA_LEN = 9 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -b2_from_bbegin: - jmp b2 -//SEG4 @2 -b2: +//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +b5_from_bbegin: + jmp b5 +//SEG4 @5 +b5: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -bend_from_b2: +//SEG6 [3] phi from @5 to @end [phi:@5->@end] +bend_from_b5: jmp bend //SEG7 @end bend: @@ -2047,7 +2151,7 @@ main: { SRCB: .byte $80 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b2 +Removing instruction jmp b5 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b3 @@ -2062,11 +2166,11 @@ Removing instruction lda #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b2_from_b3 with b2 Removing instruction bbegin: -Removing instruction b2_from_bbegin: -Removing instruction bend_from_b2: +Removing instruction b5_from_bbegin: +Removing instruction bend_from_b5: Removing instruction b2_from_b3: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b2: +Removing instruction b5: Removing instruction bend: Removing instruction b2_from_main: Removing instruction b3: @@ -2084,7 +2188,7 @@ Removing instruction jmp b2 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @2 +(label) @5 (label) @begin (label) @end (byte*) DTV_BLITTER_ALU @@ -2242,11 +2346,11 @@ Score: 1567 .label SCREEN = $400 .const SRCA_LEN = 9 //SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 +//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 @5 //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG6 [3] phi from @5 to @end [phi:@5->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-blittermin.sym b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-blittermin.sym index 9d4c3af97..5cc3a7bd1 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-blittermin.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-blittermin.sym @@ -1,4 +1,4 @@ -(label) @2 +(label) @5 (label) @begin (label) @end (byte*) DTV_BLITTER_ALU diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-color.cfg b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-color.cfg index 051574ea9..e594d8a24 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-color.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-color.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@2 -@2: scope:[] from @begin + to:@5 +@5: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @2 +@end: scope:[] from @5 [3] phi() [ ] ( ) -main: scope:[main] from @2 +main: scope:[main] from @5 asm { sei } [5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) [6] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0|(const byte) DTV_BADLINE_OFF#0 [ ] ( main:2 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-color.log b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-color.log index fe0928243..e0b9217b6 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-color.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-color.log @@ -311,11 +311,32 @@ const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + Adding pre/post-modifier *((byte*) BGCOL) ← ++ *((byte*) BGCOL) Adding pre/post-modifier *((byte[16]) main::palette + (byte) main::c) ← ++ *((byte[16]) main::palette + (byte) main::c) SYMBOLS (label) @1 (label) @2 +(label) @3 +(label) @4 +(label) @5 (label) @begin (label) @end (byte*) BGCOL @@ -508,6 +529,34 @@ SYMBOLS (byte) main::c (byte[16]) main::palette (byte) main::r +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 @@ -663,6 +712,51 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 (byte*) DTV_FEATURE ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) DTV_FEATURE_DISABLE_TIL_RESET ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -694,7 +788,7 @@ INITIAL CONTROL FLOW GRAPH (dword) DTV_COLOR_BANK_DEFAULT ← (dword/signed dword) 120832 (byte*) DTV_GRAPHICS_VIC_BANK ← ((byte*)) (word/dword/signed dword) 53309 (byte*) DTV_GRAPHICS_HICOL_BANK ← ((byte*)) (word/dword/signed dword) 53310 - to:@1 + to:@4 dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from (byte*) dtvSetCpuBankSegment1::cpuBank ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 *((byte*) dtvSetCpuBankSegment1::cpuBank) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx @@ -703,7 +797,7 @@ dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 return to:@return -@1: scope:[] from @begin +@4: scope:[] from @3 (byte*) DTV_BLITTER_SRCA_LO ← ((byte*)) (word/dword/signed dword) 54048 (byte*) DTV_BLITTER_SRCA_MI ← ((byte*)) (word/dword/signed dword) 54049 (byte*) DTV_BLITTER_SRCA_HI ← ((byte*)) (word/dword/signed dword) 54050 @@ -768,7 +862,7 @@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBan (byte) DTV_BLIT_DEST_CONT ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) DTV_BLIT_STATUS_BUSY ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) DTV_BLIT_STATUS_IRQ ← (byte/signed byte/word/signed word/dword/signed dword) 2 - to:@2 + to:@5 main: scope:[main] from asm { sei } *((byte*) DTV_FEATURE) ← (byte) DTV_FEATURE_ENABLE @@ -828,11 +922,15 @@ main::@16: scope:[main] from main::@return: scope:[main] from main::@3 return to:@return -@2: scope:[] from @1 +@5: scope:[] from @4 call main to:@end -@end: scope:[] from @2 +@end: scope:[] from @5 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Removing unused procedure dtvSetCpuBankSegment1 Eliminating unused variable (byte*) PROCPORT_DDR and assignment [0] (byte*) PROCPORT_DDR ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 Eliminating unused variable (byte) PROCPORT_DDR_MEMORY_MASK and assignment [1] (byte) PROCPORT_DDR_MEMORY_MASK ← (byte/signed byte/word/signed word/dword/signed dword) 7 @@ -986,6 +1084,8 @@ Eliminating unused variable (byte) DTV_BLIT_DEST_CONT and assignment [157] (byte Eliminating unused variable (byte) DTV_BLIT_STATUS_BUSY and assignment [158] (byte) DTV_BLIT_STATUS_BUSY ← (byte/signed byte/word/signed word/dword/signed dword) 1 Eliminating unused variable (byte) DTV_BLIT_STATUS_IRQ and assignment [159] (byte) DTV_BLIT_STATUS_IRQ ← (byte/signed byte/word/signed word/dword/signed dword) 2 Removing empty block @1 +Removing empty block @2 +Removing empty block @4 Removing empty block main::@9 Removing empty block main::@3 Removing empty block main::@10 @@ -1002,6 +1102,8 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + to:@3 +@3: scope:[] from @begin (byte*) DTV_FEATURE#0 ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) DTV_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53308 @@ -1009,8 +1111,8 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte) DTV_HIGHCOLOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) DTV_BADLINE_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (byte*) DTV_PALETTE#0 ← ((byte*)) (word/dword/signed dword) 53760 - to:@2 -main: scope:[main] from @2 + to:@5 +main: scope:[main] from @5 asm { sei } *((byte*) DTV_FEATURE#0) ← (byte) DTV_FEATURE_ENABLE#0 (byte~) main::$0 ← (byte) DTV_HIGHCOLOR#0 | (byte) DTV_BORDER_OFF#0 @@ -1055,16 +1157,17 @@ main::@8: scope:[main] from main::@14 main::@8 main::@return: scope:[main] from main::@1 return to:@return -@2: scope:[] from @begin +@5: scope:[] from @3 call main - to:@3 -@3: scope:[] from @2 + to:@6 +@6: scope:[] from @5 to:@end -@end: scope:[] from @3 +@end: scope:[] from @6 SYMBOL TABLE SSA -(label) @2 (label) @3 +(label) @5 +(label) @6 (label) @begin (label) @end (byte*) BGCOL @@ -1114,7 +1217,7 @@ SYMBOL TABLE SSA OPTIMIZING CONTROL FLOW GRAPH Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@5 -Culled Empty Block (label) @3 +Culled Empty Block (label) @6 Succesful SSA optimization Pass2CullEmptyBlocks Simple Condition (bool~) main::$2 if(*((byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@4 Simple Condition (bool~) main::$3 if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 @@ -1141,6 +1244,7 @@ if() condition always true - replacing block destination if(true) goto main::@4 Succesful SSA optimization Pass2ConstantIfs Removing unused block main::@return Succesful SSA optimization Pass2EliminateUnusedBlocks +Culled Empty Block (label) @3 Culled Empty Block (label) main::@1 Culled Empty Block (label) main::@14 Succesful SSA optimization Pass2CullEmptyBlocks @@ -1154,12 +1258,12 @@ Constant inlined main::c#0 = (byte/signed byte/word/signed word/dword/signed dwo Constant inlined main::$1 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0|(const byte) DTV_BADLINE_OFF#0 Constant inlined main::$0 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @2 @end main main::@4 main::@6 main::@7 main::@8 +Block Sequence Planned @begin @5 @end main main::@4 main::@6 main::@7 main::@8 Added new block during phi lifting main::@17(between main::@7 and main::@7) Added new block during phi lifting main::@18(between main::@8 and main::@8) -Block Sequence Planned @begin @2 @end main main::@4 main::@6 main::@7 main::@8 main::@18 main::@17 +Block Sequence Planned @begin @5 @end main main::@4 main::@6 main::@7 main::@8 main::@18 main::@17 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @2 +Adding NOP phi() at start of @5 Adding NOP phi() at start of @end CALL GRAPH Calls in [] to main:2 @@ -1174,9 +1278,9 @@ Coalesced [20] main::r#3 ← main::r#1 Coalesced down to 2 phi equivalence classes Culled Empty Block (label) main::@18 Culled Empty Block (label) main::@17 -Block Sequence Planned @begin @2 @end main main::@4 main::@6 main::@7 main::@8 +Block Sequence Planned @begin @5 @end main main::@4 main::@6 main::@7 main::@8 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @2 +Adding NOP phi() at start of @5 Adding NOP phi() at start of @end Propagating live ranges... Propagating live ranges... @@ -1186,14 +1290,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@2 -@2: scope:[] from @begin + to:@5 +@5: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @2 +@end: scope:[] from @5 [3] phi() [ ] ( ) -main: scope:[main] from @2 +main: scope:[main] from @5 asm { sei } [5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) [6] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0|(const byte) DTV_BADLINE_OFF#0 [ ] ( main:2 [ ] ) @@ -1221,13 +1325,13 @@ main::@8: scope:[main] from main::@7 main::@8 DOMINATORS @begin dominated by @begin -@2 dominated by @2 @begin -@end dominated by @2 @begin @end -main dominated by @2 @begin main -main::@4 dominated by @2 @begin main main::@4 -main::@6 dominated by @2 @begin main main::@6 main::@4 -main::@7 dominated by @2 main::@7 @begin main main::@6 main::@4 -main::@8 dominated by @2 main::@7 @begin main::@8 main main::@6 main::@4 +@5 dominated by @begin @5 +@end dominated by @begin @5 @end +main dominated by @begin @5 main +main::@4 dominated by @begin @5 main main::@4 +main::@6 dominated by @begin @5 main main::@6 main::@4 +main::@7 dominated by main::@7 @begin @5 main main::@6 main::@4 +main::@8 dominated by main::@7 @begin main::@8 @5 main main::@6 main::@4 NATURAL LOOPS Found back edge: Loop head: main::@4 tails: main::@4 blocks: null @@ -1301,15 +1405,15 @@ INITIAL ASM .label DTV_PALETTE = $d200 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -b2_from_bbegin: - jmp b2 -//SEG4 @2 -b2: +//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +b5_from_bbegin: + jmp b5 +//SEG4 @5 +b5: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -bend_from_b2: +//SEG6 [3] phi from @5 to @end [phi:@5->@end] +bend_from_b5: jmp bend //SEG7 @end bend: @@ -1451,15 +1555,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label DTV_PALETTE = $d200 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -b2_from_bbegin: - jmp b2 -//SEG4 @2 -b2: +//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +b5_from_bbegin: + jmp b5 +//SEG4 @5 +b5: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -bend_from_b2: +//SEG6 [3] phi from @5 to @end [phi:@5->@end] +bend_from_b5: jmp bend //SEG7 @end bend: @@ -1556,7 +1660,7 @@ main: { } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b2 +Removing instruction jmp b5 Removing instruction jmp bend Removing instruction jmp b4 Removing instruction jmp b6 @@ -1566,12 +1670,12 @@ Succesful ASM optimization Pass5NextJumpElimination Replacing label b7_from_b7 with b7 Replacing label b8_from_b8 with b8 Removing instruction bbegin: -Removing instruction b2_from_bbegin: -Removing instruction bend_from_b2: +Removing instruction b5_from_bbegin: +Removing instruction bend_from_b5: Removing instruction b7_from_b7: Removing instruction b8_from_b8: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b2: +Removing instruction b5: Removing instruction bend: Removing instruction b6: Removing instruction b7_from_b6: @@ -1582,7 +1686,7 @@ Removing instruction jmp b8 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @2 +(label) @5 (label) @begin (label) @end (byte*) BGCOL @@ -1639,11 +1743,11 @@ Score: 10180 .const DTV_BADLINE_OFF = $20 .label DTV_PALETTE = $d200 //SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 +//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 @5 //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG6 [3] phi from @5 to @end [phi:@5->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-color.sym b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-color.sym index 08db994b1..bfab409a9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-color.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-color.sym @@ -1,4 +1,4 @@ -(label) @2 +(label) @5 (label) @begin (label) @end (byte*) BGCOL diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.cfg b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.cfg index badeb40c9..b025f3456 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@59 -@59: scope:[] from @begin + to:@62 +@62: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @59 +@end: scope:[] from @62 [3] phi() [ ] ( ) -main: scope:[main] from @59 +main: scope:[main] from @62 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.log b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.log index 1e190731c..b1d1f0954 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.log @@ -1076,6 +1076,24 @@ const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + Importing print.kc PARSING src/test/java/dk/camelot64/kickc/test/kc/print.kc @@ -1758,6 +1776,9 @@ SYMBOLS (label) @58 (label) @59 (label) @6 +(label) @60 +(label) @61 +(label) @62 (label) @7 (label) @8 (label) @9 @@ -3386,6 +3407,34 @@ SYMBOLS (label) render_preset_name::@return (byte) render_preset_name::idx (byte*) render_preset_name::name +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 @@ -3560,6 +3609,51 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 (byte*) DTV_FEATURE ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) DTV_FEATURE_DISABLE_TIL_RESET ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -3591,7 +3685,7 @@ INITIAL CONTROL FLOW GRAPH (dword) DTV_COLOR_BANK_DEFAULT ← (dword/signed dword) 120832 (byte*) DTV_GRAPHICS_VIC_BANK ← ((byte*)) (word/dword/signed dword) 53309 (byte*) DTV_GRAPHICS_HICOL_BANK ← ((byte*)) (word/dword/signed dword) 53310 - to:@1 + to:@4 dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from (byte*) dtvSetCpuBankSegment1::cpuBank ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 *((byte*) dtvSetCpuBankSegment1::cpuBank) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx @@ -3600,7 +3694,7 @@ dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 return to:@return -@1: scope:[] from @begin +@4: scope:[] from @3 (byte*) DTV_BLITTER_SRCA_LO ← ((byte*)) (word/dword/signed dword) 54048 (byte*) DTV_BLITTER_SRCA_MI ← ((byte*)) (word/dword/signed dword) 54049 (byte*) DTV_BLITTER_SRCA_HI ← ((byte*)) (word/dword/signed dword) 54050 @@ -3668,7 +3762,7 @@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBan (byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_line_cursor ← (byte*) print_screen (byte*) print_char_cursor ← (byte*) print_line_cursor - to:@2 + to:@5 print_str_lines: scope:[print_str_lines] from to:print_str_lines::@1 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9 @@ -3706,8 +3800,8 @@ print_str_lines::@10: scope:[print_str_lines] from print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@3 return to:@return -@2: scope:[] from @1 - to:@3 +@5: scope:[] from @4 + to:@6 print_str_ln: scope:[print_str_ln] from (void~) print_str_ln::$0 ← call print_str (byte*) print_str_ln::str (void~) print_str_ln::$1 ← call print_ln @@ -3715,8 +3809,8 @@ print_str_ln: scope:[print_str_ln] from print_str_ln::@return: scope:[print_str_ln] from print_str_ln return to:@return -@3: scope:[] from @2 - to:@4 +@6: scope:[] from @5 + to:@7 print_str: scope:[print_str] from to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 @@ -3739,8 +3833,8 @@ print_str::@6: scope:[print_str] from print_str::@return: scope:[print_str] from print_str::@3 return to:@return -@4: scope:[] from @3 - to:@5 +@7: scope:[] from @6 + to:@8 print_str_at: scope:[print_str_at] from to:print_str_at::@1 print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2 @@ -3763,8 +3857,8 @@ print_str_at::@6: scope:[print_str_at] from print_str_at::@return: scope:[print_str_at] from print_str_at::@3 return to:@return -@5: scope:[] from @4 - to:@6 +@8: scope:[] from @7 + to:@9 print_ln: scope:[print_ln] from to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 @@ -3779,8 +3873,8 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 print_ln::@return: scope:[print_ln] from print_ln::@2 return to:@return -@6: scope:[] from @5 - to:@7 +@9: scope:[] from @8 + to:@10 print_sword: scope:[print_sword] from (bool~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 @@ -3798,8 +3892,8 @@ print_sword::@2: scope:[print_sword] from print_sword print_sword::@return: scope:[print_sword] from print_sword::@1 return to:@return -@7: scope:[] from @6 - to:@8 +@10: scope:[] from @9 + to:@11 print_sbyte: scope:[print_sbyte] from (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sbyte::$1 ← ! (bool~) print_sbyte::$0 @@ -3817,8 +3911,8 @@ print_sbyte::@2: scope:[print_sbyte] from print_sbyte print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 return to:@return -@8: scope:[] from @7 - to:@9 +@11: scope:[] from @10 + to:@12 print_word: scope:[print_word] from (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -3828,8 +3922,8 @@ print_word: scope:[print_word] from print_word::@return: scope:[print_word] from print_word return to:@return -@9: scope:[] from @8 - to:@10 +@12: scope:[] from @11 + to:@13 print_dword: scope:[print_dword] from (word~) print_dword::$0 ← > (dword) print_dword::dw (void~) print_dword::$1 ← call print_word (word~) print_dword::$0 @@ -3839,8 +3933,8 @@ print_dword: scope:[print_dword] from print_dword::@return: scope:[print_dword] from print_dword return to:@return -@10: scope:[] from @9 - to:@11 +@13: scope:[] from @12 + to:@14 print_sdword: scope:[print_sdword] from (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0 @@ -3858,9 +3952,9 @@ print_sdword::@2: scope:[print_sdword] from print_sdword print_sdword::@return: scope:[print_sdword] from print_sdword::@1 return to:@return -@11: scope:[] from @10 +@14: scope:[] from @13 (byte[]) print_hextab ← (string) "0123456789abcdef" - to:@12 + to:@15 print_byte: scope:[print_byte] from (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_hextab + (byte~) print_byte::$0) @@ -3870,8 +3964,8 @@ print_byte: scope:[print_byte] from print_byte::@return: scope:[print_byte] from print_byte return to:@return -@12: scope:[] from @11 - to:@13 +@15: scope:[] from @14 + to:@16 print_char: scope:[print_char] from *((byte*) print_char_cursor) ← (byte) print_char::ch (byte*) print_char_cursor ← ++ (byte*) print_char_cursor @@ -3879,8 +3973,8 @@ print_char: scope:[print_char] from print_char::@return: scope:[print_char] from print_char return to:@return -@13: scope:[] from @12 - to:@14 +@16: scope:[] from @15 + to:@17 print_cls: scope:[print_cls] from (byte*) print_cls::sc ← (byte*) print_screen to:print_cls::@1 @@ -3898,8 +3992,8 @@ print_cls::@2: scope:[print_cls] from print_cls::@1 print_cls::@return: scope:[print_cls] from print_cls::@2 return to:@return -@14: scope:[] from @13 - to:@15 +@17: scope:[] from @16 + to:@18 print_set_screen: scope:[print_set_screen] from (byte*) print_screen ← (byte*) print_set_screen::screen (byte*) print_line_cursor ← (byte*) print_screen @@ -3908,7 +4002,7 @@ print_set_screen: scope:[print_set_screen] from print_set_screen::@return: scope:[print_set_screen] from print_set_screen return to:@return -@15: scope:[] from @14 +@18: scope:[] from @17 (byte) KEY_DEL ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) KEY_RETURN ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) KEY_CRSR_RIGHT ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -3976,7 +4070,7 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen (byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@16 + to:@19 keyboard_init: scope:[keyboard_init] from *((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255 *((byte*) CIA1_PORT_B_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -3984,8 +4078,8 @@ keyboard_init: scope:[keyboard_init] from keyboard_init::@return: scope:[keyboard_init] from keyboard_init return to:@return -@16: scope:[] from @15 - to:@17 +@19: scope:[] from @18 + to:@20 keyboard_matrix_read: scope:[keyboard_matrix_read] from *((byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 ← ~ *((byte*) CIA1_PORT_B) @@ -3998,8 +4092,8 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri to:@return keyboard_matrix_read::@1: scope:[keyboard_matrix_read] from to:keyboard_matrix_read::@return -@17: scope:[] from @16 - to:@18 +@20: scope:[] from @19 + to:@21 keyboard_key_pressed: scope:[keyboard_key_pressed] from (byte~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key & (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) keyboard_key_pressed::colidx ← (byte~) keyboard_key_pressed::$0 @@ -4015,8 +4109,8 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p to:@return keyboard_key_pressed::@1: scope:[keyboard_key_pressed] from to:keyboard_key_pressed::@return -@18: scope:[] from @17 - to:@19 +@21: scope:[] from @20 + to:@22 keyboard_get_keycode: scope:[keyboard_get_keycode] from (byte) keyboard_get_keycode::return ← *((byte[]) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch) to:keyboard_get_keycode::@return @@ -4026,7 +4120,7 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k to:@return keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from to:keyboard_get_keycode::@return -@19: scope:[] from @18 +@22: scope:[] from @21 (byte[8]) keyboard_events ← { fill( 8, 0) } (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -4037,7 +4131,7 @@ keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT (byte) KEY_MODIFIER_SHIFT ← (byte~) $0 (byte[8]) keyboard_scan_values ← { fill( 8, 0) } - to:@20 + to:@23 keyboard_event_scan: scope:[keyboard_event_scan] from (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -4150,8 +4244,8 @@ keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan: keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@12 return to:@return -@20: scope:[] from @19 - to:@21 +@23: scope:[] from @22 + to:@24 keyboard_event_pressed: scope:[keyboard_event_pressed] from (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3 (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0) @@ -4165,8 +4259,8 @@ keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_e to:@return keyboard_event_pressed::@1: scope:[keyboard_event_pressed] from to:keyboard_event_pressed::@return -@21: scope:[] from @20 - to:@22 +@24: scope:[] from @23 + to:@25 keyboard_event_get: scope:[keyboard_event_get] from (bool~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) keyboard_event_get::$0) goto keyboard_event_get::@1 @@ -4190,13 +4284,13 @@ keyboard_event_get::@5: scope:[keyboard_event_get] from to:keyboard_event_get::@1 keyboard_event_get::@6: scope:[keyboard_event_get] from to:keyboard_event_get::@2 -@22: scope:[] from @21 +@25: scope:[] from @24 (byte[256]) bitmap_plot_xlo ← { fill( 256, 0) } (byte[256]) bitmap_plot_xhi ← { fill( 256, 0) } (byte[256]) bitmap_plot_ylo ← { fill( 256, 0) } (byte[256]) bitmap_plot_yhi ← { fill( 256, 0) } (byte[256]) bitmap_plot_bit ← { fill( 256, 0) } - to:@23 + to:@26 bitmap_init: scope:[bitmap_init] from (byte) bitmap_init::bits ← (byte/word/signed word/dword/signed dword) 128 (byte) bitmap_init::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -4252,8 +4346,8 @@ bitmap_init::@8: scope:[bitmap_init] from bitmap_init::@4 bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@8 return to:@return -@23: scope:[] from @22 - to:@24 +@26: scope:[] from @25 + to:@27 bitmap_clear: scope:[bitmap_clear] from (byte*~) bitmap_clear::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_xhi + (byte/signed byte/word/signed word/dword/signed dword) 0), *((byte[256]) bitmap_plot_xlo + (byte/signed byte/word/signed word/dword/signed dword) 0) } (byte*) bitmap_clear::bitmap ← (byte*~) bitmap_clear::$0 @@ -4279,8 +4373,8 @@ bitmap_clear::@4: scope:[bitmap_clear] from bitmap_clear::@3 bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@4 return to:@return -@24: scope:[] from @23 - to:@25 +@27: scope:[] from @26 + to:@28 bitmap_plot: scope:[bitmap_plot] from (word) bitmap_plot::plotter_x ← { *((byte[256]) bitmap_plot_xhi + (byte) bitmap_plot::x), *((byte[256]) bitmap_plot_xlo + (byte) bitmap_plot::x) } (word) bitmap_plot::plotter_y ← { *((byte[256]) bitmap_plot_yhi + (byte) bitmap_plot::y), *((byte[256]) bitmap_plot_ylo + (byte) bitmap_plot::y) } @@ -4292,8 +4386,8 @@ bitmap_plot: scope:[bitmap_plot] from bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot return to:@return -@25: scope:[] from @24 - to:@26 +@28: scope:[] from @27 + to:@29 bitmap_line: scope:[bitmap_line] from (bool~) bitmap_line::$0 ← (byte) bitmap_line::x0 < (byte) bitmap_line::x1 if((bool~) bitmap_line::$0) goto bitmap_line::@1 @@ -4389,8 +4483,8 @@ bitmap_line::@28: scope:[bitmap_line] from bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@8 return to:@return -@26: scope:[] from @25 - to:@27 +@29: scope:[] from @28 + to:@30 bitmap_line_xdyi: scope:[bitmap_line_xdyi] from (byte~) bitmap_line_xdyi::$0 ← (byte) bitmap_line_xdyi::yd >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) bitmap_line_xdyi::e ← (byte~) bitmap_line_xdyi::$0 @@ -4419,8 +4513,8 @@ bitmap_line_xdyi::@4: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@2 bitmap_line_xdyi::@return: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@4 return to:@return -@27: scope:[] from @26 - to:@28 +@30: scope:[] from @29 + to:@31 bitmap_line_xdyd: scope:[bitmap_line_xdyd] from (byte~) bitmap_line_xdyd::$0 ← (byte) bitmap_line_xdyd::yd >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) bitmap_line_xdyd::e ← (byte~) bitmap_line_xdyd::$0 @@ -4449,8 +4543,8 @@ bitmap_line_xdyd::@4: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@2 bitmap_line_xdyd::@return: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@4 return to:@return -@28: scope:[] from @27 - to:@29 +@31: scope:[] from @30 + to:@32 bitmap_line_ydxi: scope:[bitmap_line_ydxi] from (byte~) bitmap_line_ydxi::$0 ← (byte) bitmap_line_ydxi::xd >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) bitmap_line_ydxi::e ← (byte~) bitmap_line_ydxi::$0 @@ -4479,8 +4573,8 @@ bitmap_line_ydxi::@4: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2 bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@4 return to:@return -@29: scope:[] from @28 - to:@30 +@32: scope:[] from @31 + to:@33 bitmap_line_ydxd: scope:[bitmap_line_ydxd] from (byte~) bitmap_line_ydxd::$0 ← (byte) bitmap_line_ydxd::xd >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) bitmap_line_ydxd::e ← (byte~) bitmap_line_ydxd::$0 @@ -4510,8 +4604,8 @@ bitmap_line_ydxd::@4: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@4 return to:@return -@30: scope:[] from @29 - to:@31 +@33: scope:[] from @32 + to:@34 main: scope:[main] from asm { sei } *((byte*) PROCPORT_DDR) ← (byte) PROCPORT_DDR_MEMORY_MASK @@ -4538,7 +4632,7 @@ main::@6: scope:[main] from main::@return: scope:[main] from main::@3 return to:@return -@31: scope:[] from @30 +@34: scope:[] from @33 (byte*) VIC_SCREEN0 ← ((byte*)) (word/signed word/dword/signed dword) 16384 (byte*) VIC_SCREEN1 ← ((byte*)) (word/signed word/dword/signed dword) 17408 (byte*) VIC_SCREEN2 ← ((byte*)) (word/signed word/dword/signed dword) 18432 @@ -4554,7 +4648,7 @@ main::@return: scope:[main] from main::@3 (dword) PLANE_BLANK ← (dword/signed dword) 229376 (dword) PLANE_FULL ← (dword/signed dword) 237568 (dword) PLANE_CHARSET8 ← (dword/signed dword) 245760 - to:@32 + to:@35 get_plane: scope:[get_plane] from (bool~) get_plane::$0 ← (byte) get_plane::idx == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) get_plane::$0) goto get_plane::@1 @@ -4758,8 +4852,8 @@ get_plane::@68: scope:[get_plane] from to:get_plane::@27 get_plane::@69: scope:[get_plane] from to:get_plane::@return -@32: scope:[] from @31 - to:@33 +@35: scope:[] from @34 + to:@36 get_vic_screen: scope:[get_vic_screen] from (bool~) get_vic_screen::$0 ← (byte) get_vic_screen::idx == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) get_vic_screen::$0) goto get_vic_screen::@1 @@ -4831,8 +4925,8 @@ get_vic_screen::@23: scope:[get_vic_screen] from to:get_vic_screen::@9 get_vic_screen::@24: scope:[get_vic_screen] from to:get_vic_screen::@return -@33: scope:[] from @32 - to:@34 +@36: scope:[] from @35 + to:@37 get_vic_charset: scope:[get_vic_charset] from (bool~) get_vic_charset::$0 ← (byte) get_vic_charset::idx == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) get_vic_charset::$0) goto get_vic_charset::@1 @@ -4865,7 +4959,7 @@ get_vic_charset::@8: scope:[get_vic_charset] from to:get_vic_charset::@3 get_vic_charset::@9: scope:[get_vic_charset] from to:get_vic_charset::@return -@34: scope:[] from @33 +@37: scope:[] from @36 (byte*) FORM_SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) FORM_CHARSET ← ((byte*)) (word/signed word/dword/signed dword) 6144 (string~) $1 ← (string) " C64 DTV Graphics Mode Explorer @" + (string) " @" @@ -4917,7 +5011,7 @@ get_vic_charset::@9: scope:[get_vic_charset] from (byte[]) preset_sixsfred ← { (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 9, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } (byte[]) preset_sixsfred2 ← { (byte/signed byte/word/signed word/dword/signed dword) 9, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 9, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } (byte[]) preset_8bpppixelcell ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } - to:@35 + to:@38 apply_preset: scope:[apply_preset] from (bool~) apply_preset::$0 ← (byte) apply_preset::idx == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) apply_preset::$0) goto apply_preset::@1 @@ -5054,8 +5148,8 @@ apply_preset::@46: scope:[apply_preset] from apply_preset::@23 apply_preset::@return: scope:[apply_preset] from apply_preset::@46 return to:@return -@35: scope:[] from @34 - to:@36 +@38: scope:[] from @37 + to:@39 render_preset_name: scope:[render_preset_name] from (bool~) render_preset_name::$0 ← (byte) render_preset_name::idx == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) render_preset_name::$0) goto render_preset_name::@1 @@ -5187,7 +5281,7 @@ render_preset_name::@44: scope:[render_preset_name] from render_preset_name::@return: scope:[render_preset_name] from render_preset_name::@22 return to:@return -@36: scope:[] from @35 +@39: scope:[] from @38 (byte*~) $32 ← (byte[]) form_fields_val + (byte/signed byte/word/signed word/dword/signed dword) 0 (byte*) form_preset ← (byte*~) $32 (byte*~) $33 ← (byte[]) form_fields_val + (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -5260,7 +5354,7 @@ render_preset_name::@return: scope:[render_preset_name] from render_preset_name (byte*) form_vic_bg3_hi ← (byte*~) $66 (byte*~) $67 ← (byte[]) form_fields_val + (byte/signed byte/word/signed word/dword/signed dword) 35 (byte*) form_vic_bg3_lo ← (byte*~) $67 - to:@37 + to:@40 gfx_mode: scope:[gfx_mode] from (byte) gfx_mode::dtv_control ← (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) gfx_mode::$0 ← *((byte*) form_ctrl_line) != (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -5519,8 +5613,8 @@ gfx_mode::@44: scope:[gfx_mode] from to:gfx_mode::@22 gfx_mode::@45: scope:[gfx_mode] from to:gfx_mode::@18 -@37: scope:[] from @36 - to:@38 +@40: scope:[] from @39 + to:@41 gfx_init: scope:[gfx_init] from (void~) gfx_init::$0 ← call gfx_init_screen0 (void~) gfx_init::$1 ← call gfx_init_screen1 @@ -5541,8 +5635,8 @@ gfx_init: scope:[gfx_init] from gfx_init::@return: scope:[gfx_init] from gfx_init return to:@return -@38: scope:[] from @37 - to:@39 +@41: scope:[] from @40 + to:@42 gfx_init_charset: scope:[gfx_init_charset] from *((byte*) PROCPORT) ← (byte/signed byte/word/signed word/dword/signed dword) 50 (byte*) gfx_init_charset::chargen ← (byte*) CHARGEN @@ -5571,8 +5665,8 @@ gfx_init_charset::@4: scope:[gfx_init_charset] from gfx_init_charset::@3 gfx_init_charset::@return: scope:[gfx_init_charset] from gfx_init_charset::@4 return to:@return -@39: scope:[] from @38 - to:@40 +@42: scope:[] from @41 + to:@43 gfx_init_screen0: scope:[gfx_init_screen0] from (byte*) gfx_init_screen0::ch ← (byte*) VIC_SCREEN0 (byte) gfx_init_screen0::cy ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -5601,8 +5695,8 @@ gfx_init_screen0::@4: scope:[gfx_init_screen0] from gfx_init_screen0::@3 gfx_init_screen0::@return: scope:[gfx_init_screen0] from gfx_init_screen0::@4 return to:@return -@40: scope:[] from @39 - to:@41 +@43: scope:[] from @42 + to:@44 gfx_init_screen1: scope:[gfx_init_screen1] from (byte*) gfx_init_screen1::ch ← (byte*) VIC_SCREEN1 (byte) gfx_init_screen1::cy ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -5629,8 +5723,8 @@ gfx_init_screen1::@4: scope:[gfx_init_screen1] from gfx_init_screen1::@3 gfx_init_screen1::@return: scope:[gfx_init_screen1] from gfx_init_screen1::@4 return to:@return -@41: scope:[] from @40 - to:@42 +@44: scope:[] from @43 + to:@45 gfx_init_screen2: scope:[gfx_init_screen2] from (byte*) gfx_init_screen2::ch ← (byte*) VIC_SCREEN2 (byte) gfx_init_screen2::cy ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -5662,8 +5756,8 @@ gfx_init_screen2::@4: scope:[gfx_init_screen2] from gfx_init_screen2::@3 gfx_init_screen2::@return: scope:[gfx_init_screen2] from gfx_init_screen2::@4 return to:@return -@42: scope:[] from @41 - to:@43 +@45: scope:[] from @44 + to:@46 gfx_init_screen3: scope:[gfx_init_screen3] from (byte*) gfx_init_screen3::ch ← (byte*) VIC_SCREEN3 (byte) gfx_init_screen3::cy ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -5692,8 +5786,8 @@ gfx_init_screen3::@4: scope:[gfx_init_screen3] from gfx_init_screen3::@3 gfx_init_screen3::@return: scope:[gfx_init_screen3] from gfx_init_screen3::@4 return to:@return -@43: scope:[] from @42 - to:@44 +@46: scope:[] from @45 + to:@47 gfx_init_screen4: scope:[gfx_init_screen4] from (byte*) gfx_init_screen4::ch ← (byte*) VIC_SCREEN4 (byte) gfx_init_screen4::cy ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -5718,8 +5812,8 @@ gfx_init_screen4::@4: scope:[gfx_init_screen4] from gfx_init_screen4::@3 gfx_init_screen4::@return: scope:[gfx_init_screen4] from gfx_init_screen4::@4 return to:@return -@44: scope:[] from @43 - to:@45 +@47: scope:[] from @46 + to:@48 gfx_init_vic_bitmap: scope:[gfx_init_vic_bitmap] from (void~) gfx_init_vic_bitmap::$0 ← call bitmap_init (byte*) VIC_BITMAP (void~) gfx_init_vic_bitmap::$1 ← call bitmap_clear @@ -5741,8 +5835,8 @@ gfx_init_vic_bitmap::@2: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap:: gfx_init_vic_bitmap::@return: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@2 return to:@return -@45: scope:[] from @44 - to:@46 +@48: scope:[] from @47 + to:@49 gfx_init_plane_8bppchunky: scope:[gfx_init_plane_8bppchunky] from (dword~) gfx_init_plane_8bppchunky::$0 ← (dword) PLANE_8BPP_CHUNKY / (word/signed word/dword/signed dword) 16384 (byte~) gfx_init_plane_8bppchunky::$1 ← ((byte)) (dword~) gfx_init_plane_8bppchunky::$0 @@ -5788,8 +5882,8 @@ gfx_init_plane_8bppchunky::@6: scope:[gfx_init_plane_8bppchunky] from gfx_init_ gfx_init_plane_8bppchunky::@return: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@6 return to:@return -@46: scope:[] from @45 - to:@47 +@49: scope:[] from @48 + to:@50 gfx_init_plane_horisontal: scope:[gfx_init_plane_horisontal] from (dword~) gfx_init_plane_horisontal::$0 ← (dword) PLANE_HORISONTAL / (word/signed word/dword/signed dword) 16384 (byte~) gfx_init_plane_horisontal::$1 ← ((byte)) (dword~) gfx_init_plane_horisontal::$0 @@ -5837,8 +5931,8 @@ gfx_init_plane_horisontal::@8: scope:[gfx_init_plane_horisontal] from gfx_init_ gfx_init_plane_horisontal::@return: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@8 return to:@return -@47: scope:[] from @46 - to:@48 +@50: scope:[] from @49 + to:@51 gfx_init_plane_horisontal2: scope:[gfx_init_plane_horisontal2] from (dword~) gfx_init_plane_horisontal2::$0 ← (dword) PLANE_HORISONTAL2 / (word/signed word/dword/signed dword) 16384 (byte~) gfx_init_plane_horisontal2::$1 ← ((byte)) (dword~) gfx_init_plane_horisontal2::$0 @@ -5877,8 +5971,8 @@ gfx_init_plane_horisontal2::@4: scope:[gfx_init_plane_horisontal2] from gfx_ini gfx_init_plane_horisontal2::@return: scope:[gfx_init_plane_horisontal2] from gfx_init_plane_horisontal2::@4 return to:@return -@48: scope:[] from @47 - to:@49 +@51: scope:[] from @50 + to:@52 gfx_init_plane_vertical: scope:[gfx_init_plane_vertical] from (dword~) gfx_init_plane_vertical::$0 ← (dword) PLANE_VERTICAL / (word/signed word/dword/signed dword) 16384 (byte~) gfx_init_plane_vertical::$1 ← ((byte)) (dword~) gfx_init_plane_vertical::$0 @@ -5913,8 +6007,8 @@ gfx_init_plane_vertical::@4: scope:[gfx_init_plane_vertical] from gfx_init_plan gfx_init_plane_vertical::@return: scope:[gfx_init_plane_vertical] from gfx_init_plane_vertical::@4 return to:@return -@49: scope:[] from @48 - to:@50 +@52: scope:[] from @51 + to:@53 gfx_init_plane_charset8: scope:[gfx_init_plane_charset8] from (dword~) gfx_init_plane_charset8::$0 ← (dword) PLANE_CHARSET8 / (word/signed word/dword/signed dword) 16384 (byte~) gfx_init_plane_charset8::$1 ← ((byte)) (dword~) gfx_init_plane_charset8::$0 @@ -5976,32 +6070,32 @@ gfx_init_plane_charset8::@8: scope:[gfx_init_plane_charset8] from gfx_init_plan gfx_init_plane_charset8::@return: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@8 return to:@return -@50: scope:[] from @49 - to:@51 +@53: scope:[] from @52 + to:@54 gfx_init_plane_vertical2: scope:[gfx_init_plane_vertical2] from (void~) gfx_init_plane_vertical2::$0 ← call gfx_init_plane_fill (dword) PLANE_VERTICAL2 (byte/signed byte/word/signed word/dword/signed dword) 27 to:gfx_init_plane_vertical2::@return gfx_init_plane_vertical2::@return: scope:[gfx_init_plane_vertical2] from gfx_init_plane_vertical2 return to:@return -@51: scope:[] from @50 - to:@52 +@54: scope:[] from @53 + to:@55 gfx_init_plane_blank: scope:[gfx_init_plane_blank] from (void~) gfx_init_plane_blank::$0 ← call gfx_init_plane_fill (dword) PLANE_BLANK (byte/signed byte/word/signed word/dword/signed dword) 0 to:gfx_init_plane_blank::@return gfx_init_plane_blank::@return: scope:[gfx_init_plane_blank] from gfx_init_plane_blank return to:@return -@52: scope:[] from @51 - to:@53 +@55: scope:[] from @54 + to:@56 gfx_init_plane_full: scope:[gfx_init_plane_full] from (void~) gfx_init_plane_full::$0 ← call gfx_init_plane_fill (dword) PLANE_FULL (byte/word/signed word/dword/signed dword) 255 to:gfx_init_plane_full::@return gfx_init_plane_full::@return: scope:[gfx_init_plane_full] from gfx_init_plane_full return to:@return -@53: scope:[] from @52 - to:@54 +@56: scope:[] from @55 + to:@57 gfx_init_plane_fill: scope:[gfx_init_plane_fill] from (dword~) gfx_init_plane_fill::$0 ← (dword) gfx_init_plane_fill::plane_addr << (byte/signed byte/word/signed word/dword/signed dword) 2 (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 @@ -6038,8 +6132,8 @@ gfx_init_plane_fill::@4: scope:[gfx_init_plane_fill] from gfx_init_plane_fill:: gfx_init_plane_fill::@return: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@4 return to:@return -@54: scope:[] from @53 - to:@55 +@57: scope:[] from @56 + to:@58 form_mode: scope:[form_mode] from (void~) form_mode::$0 ← call print_set_screen (byte*) COLS (void~) form_mode::$1 ← call print_cls @@ -6153,14 +6247,14 @@ form_mode::@19: scope:[form_mode] from to:form_mode::@4 form_mode::@20: scope:[form_mode] from to:form_mode::@return -@55: scope:[] from @54 +@58: scope:[] from @57 (byte[25]) form_line_lo ← { fill( 25, 0) } (byte[25]) form_line_hi ← { fill( 25, 0) } (byte) form_field_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0 (signed byte) FORM_CURSOR_BLINK ← (byte/signed byte/word/signed word/dword/signed dword) 40 (signed word/signed byte/signed dword~) $68 ← (signed byte) FORM_CURSOR_BLINK / (byte/signed byte/word/signed word/dword/signed dword) 2 (signed byte) form_cursor_count ← (signed word/signed byte/signed dword~) $68 - to:@56 + to:@59 form_set_screen: scope:[form_set_screen] from (byte*) form_set_screen::line ← (byte*) form_set_screen::screen (byte) form_set_screen::y ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -6181,8 +6275,8 @@ form_set_screen::@2: scope:[form_set_screen] from form_set_screen::@1 form_set_screen::@return: scope:[form_set_screen] from form_set_screen::@2 return to:@return -@56: scope:[] from @55 - to:@57 +@59: scope:[] from @58 + to:@60 form_field_ptr: scope:[form_field_ptr] from (byte) form_field_ptr::y ← *((byte[]) form_fields_y + (byte) form_field_ptr::field_idx) (byte*~) form_field_ptr::$0 ← ((byte*)) { *((byte[25]) form_line_hi + (byte) form_field_ptr::y), *((byte[25]) form_line_lo + (byte) form_field_ptr::y) } @@ -6198,8 +6292,8 @@ form_field_ptr::@return: scope:[form_field_ptr] from form_field_ptr form_field_ to:@return form_field_ptr::@1: scope:[form_field_ptr] from to:form_field_ptr::@return -@57: scope:[] from @56 - to:@58 +@60: scope:[] from @59 + to:@61 form_render_values: scope:[form_render_values] from (byte) form_render_values::idx ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:form_render_values::@1 @@ -6216,8 +6310,8 @@ form_render_values::@2: scope:[form_render_values] from form_render_values::@1 form_render_values::@return: scope:[form_render_values] from form_render_values::@2 return to:@return -@58: scope:[] from @57 - to:@59 +@61: scope:[] from @60 + to:@62 form_control: scope:[form_control] from (byte*~) form_control::$0 ← call form_field_ptr (byte) form_field_idx (byte*) form_control::field ← (byte*~) form_control::$0 @@ -6350,11 +6444,15 @@ form_control::@31: scope:[form_control] from to:form_control::@14 form_control::@32: scope:[form_control] from to:form_control::@return -@59: scope:[] from @58 +@62: scope:[] from @61 call main to:@end -@end: scope:[] from @59 +@end: scope:[] from @62 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Removing unused procedure print_str_ln Removing unused procedure print_sword Removing unused procedure print_sbyte @@ -6640,45 +6738,47 @@ Creating constant string variable for inline (const string) render_preset_name:: Creating constant string variable for inline (const string) render_preset_name::$24 "Sixs Fred 2 @" Creating constant string variable for inline (const string) render_preset_name::$25 "8bpp Pixel Cell @" Creating constant string variable for inline (const string) render_preset_name::$26 "Standard Charset @" +Removing empty block @1 +Removing empty block @2 Removing empty block print_str_lines::@6 Removing empty block print_str_lines::@3 Removing empty block print_str_lines::@7 Removing empty block print_str_lines::@10 -Removing empty block @2 -Removing empty block @3 -Removing empty block @4 +Removing empty block @5 +Removing empty block @6 +Removing empty block @7 Removing empty block print_str_at::@4 Removing empty block print_str_at::@3 Removing empty block print_str_at::@5 Removing empty block print_str_at::@6 -Removing empty block @5 -Removing empty block @6 -Removing empty block @7 Removing empty block @8 Removing empty block @9 Removing empty block @10 +Removing empty block @11 Removing empty block @12 Removing empty block @13 -Removing empty block @14 +Removing empty block @15 Removing empty block @16 -Removing empty block keyboard_matrix_read::@1 Removing empty block @17 -Removing empty block @18 +Removing empty block @19 +Removing empty block keyboard_matrix_read::@1 +Removing empty block @20 +Removing empty block @21 Removing empty block keyboard_event_scan::@14 Removing empty block keyboard_event_scan::@8 Removing empty block keyboard_event_scan::@18 -Removing empty block @20 +Removing empty block @23 Removing empty block keyboard_event_pressed::@1 -Removing empty block @21 +Removing empty block @24 Removing empty block keyboard_event_get::@4 Removing empty block keyboard_event_get::@2 Removing empty block keyboard_event_get::@5 Removing empty block keyboard_event_get::@6 Removing empty block bitmap_init::@8 -Removing empty block @23 +Removing empty block @26 Removing empty block bitmap_clear::@4 -Removing empty block @24 -Removing empty block @25 +Removing empty block @27 +Removing empty block @28 Removing empty block bitmap_line::@4 Removing empty block bitmap_line::@18 Removing empty block bitmap_line::@5 @@ -6693,15 +6793,15 @@ Removing empty block bitmap_line::@12 Removing empty block bitmap_line::@26 Removing empty block bitmap_line::@14 Removing empty block bitmap_line::@28 -Removing empty block @26 -Removing empty block bitmap_line_xdyi::@4 -Removing empty block @27 -Removing empty block bitmap_line_xdyd::@4 -Removing empty block @28 -Removing empty block bitmap_line_ydxi::@4 Removing empty block @29 -Removing empty block bitmap_line_ydxd::@4 +Removing empty block bitmap_line_xdyi::@4 Removing empty block @30 +Removing empty block bitmap_line_xdyd::@4 +Removing empty block @31 +Removing empty block bitmap_line_ydxi::@4 +Removing empty block @32 +Removing empty block bitmap_line_ydxd::@4 +Removing empty block @33 Removing empty block main::@4 Removing empty block main::@3 Removing empty block main::@5 @@ -6746,7 +6846,7 @@ Removing empty block get_plane::@66 Removing empty block get_plane::@67 Removing empty block get_plane::@68 Removing empty block get_plane::@69 -Removing empty block @32 +Removing empty block @35 Removing empty block get_vic_screen::@15 Removing empty block get_vic_screen::@6 Removing empty block get_vic_screen::@16 @@ -6760,7 +6860,7 @@ Removing empty block get_vic_screen::@21 Removing empty block get_vic_screen::@22 Removing empty block get_vic_screen::@23 Removing empty block get_vic_screen::@24 -Removing empty block @33 +Removing empty block @36 Removing empty block get_vic_charset::@6 Removing empty block get_vic_charset::@7 Removing empty block get_vic_charset::@8 @@ -6787,7 +6887,7 @@ Removing empty block apply_preset::@21 Removing empty block apply_preset::@44 Removing empty block apply_preset::@45 Removing empty block apply_preset::@46 -Removing empty block @35 +Removing empty block @38 Removing empty block render_preset_name::@12 Removing empty block render_preset_name::@34 Removing empty block render_preset_name::@13 @@ -6822,31 +6922,31 @@ Removing empty block gfx_mode::@42 Removing empty block gfx_mode::@43 Removing empty block gfx_mode::@44 Removing empty block gfx_mode::@45 -Removing empty block @37 -Removing empty block @38 -Removing empty block @39 -Removing empty block gfx_init_screen0::@4 Removing empty block @40 -Removing empty block gfx_init_screen1::@4 Removing empty block @41 -Removing empty block gfx_init_screen2::@4 Removing empty block @42 -Removing empty block gfx_init_screen3::@4 +Removing empty block gfx_init_screen0::@4 Removing empty block @43 -Removing empty block gfx_init_screen4::@4 +Removing empty block gfx_init_screen1::@4 Removing empty block @44 -Removing empty block gfx_init_vic_bitmap::@2 +Removing empty block gfx_init_screen2::@4 Removing empty block @45 +Removing empty block gfx_init_screen3::@4 Removing empty block @46 -Removing empty block gfx_init_plane_horisontal::@6 +Removing empty block gfx_init_screen4::@4 Removing empty block @47 +Removing empty block gfx_init_vic_bitmap::@2 Removing empty block @48 Removing empty block @49 +Removing empty block gfx_init_plane_horisontal::@6 Removing empty block @50 Removing empty block @51 Removing empty block @52 Removing empty block @53 Removing empty block @54 +Removing empty block @55 +Removing empty block @56 +Removing empty block @57 Removing empty block form_mode::@11 Removing empty block form_mode::@4 Removing empty block form_mode::@12 @@ -6858,11 +6958,11 @@ Removing empty block form_mode::@17 Removing empty block form_mode::@19 Removing empty block form_mode::@20 Removing empty block form_set_screen::@2 -Removing empty block @56 +Removing empty block @59 Removing empty block form_field_ptr::@1 -Removing empty block @57 +Removing empty block @60 Removing empty block form_render_values::@2 -Removing empty block @58 +Removing empty block @61 Removing empty block form_control::@17 Removing empty block form_control::@21 Removing empty block form_control::@23 @@ -6959,6 +7059,8 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + to:@3 +@3: scope:[] from @begin (byte*) DTV_FEATURE#0 ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) DTV_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53308 @@ -6986,7 +7088,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) DTV_COLOR_BANK_HI#0 ← ((byte*)) (word/dword/signed dword) 53303 (dword) DTV_COLOR_BANK_DEFAULT#0 ← (dword/signed dword) 120832 (byte*) DTV_GRAPHICS_VIC_BANK#0 ← ((byte*)) (word/dword/signed dword) 53309 - to:@1 + to:@4 dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@6 gfx_init_plane_charset8 gfx_init_plane_charset8::@8 gfx_init_plane_fill gfx_init_plane_fill::@4 gfx_init_plane_horisontal gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal::@8 gfx_init_plane_vertical gfx_init_plane_vertical::@4 (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 ← phi( gfx_init_plane_8bppchunky/(byte) dtvSetCpuBankSegment1::cpuBankIdx#0 gfx_init_plane_8bppchunky::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 gfx_init_plane_8bppchunky::@6/(byte) dtvSetCpuBankSegment1::cpuBankIdx#2 gfx_init_plane_charset8/(byte) dtvSetCpuBankSegment1::cpuBankIdx#9 gfx_init_plane_charset8::@8/(byte) dtvSetCpuBankSegment1::cpuBankIdx#10 gfx_init_plane_fill/(byte) dtvSetCpuBankSegment1::cpuBankIdx#11 gfx_init_plane_fill::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#12 gfx_init_plane_horisontal/(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 gfx_init_plane_horisontal2/(byte) dtvSetCpuBankSegment1::cpuBankIdx#5 gfx_init_plane_horisontal2::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#6 gfx_init_plane_horisontal::@8/(byte) dtvSetCpuBankSegment1::cpuBankIdx#4 gfx_init_plane_vertical/(byte) dtvSetCpuBankSegment1::cpuBankIdx#7 gfx_init_plane_vertical::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#8 ) (byte*) dtvSetCpuBankSegment1::cpuBank#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 @@ -6996,11 +7098,11 @@ dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_plane_8bppch dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 return to:@return -@1: scope:[] from @begin +@4: scope:[] from @3 (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 - to:@11 + to:@14 print_str_lines: scope:[print_str_lines] from form_mode::@22 form_mode::@25 (byte*) print_line_cursor#45 ← phi( form_mode::@22/(byte*) print_line_cursor#12 form_mode::@25/(byte*) print_line_cursor#15 ) (byte*) print_char_cursor#47 ← phi( form_mode::@22/(byte*) print_char_cursor#13 form_mode::@25/(byte*) print_char_cursor#16 ) @@ -7107,12 +7209,12 @@ print_ln::@return: scope:[print_ln] from print_ln::@2 (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#24 return to:@return -@11: scope:[] from @1 - (byte*) print_char_cursor#76 ← phi( @1/(byte*) print_char_cursor#0 ) - (byte*) print_line_cursor#76 ← phi( @1/(byte*) print_line_cursor#0 ) - (byte*) print_screen#55 ← phi( @1/(byte*) print_screen#0 ) +@14: scope:[] from @4 + (byte*) print_char_cursor#76 ← phi( @4/(byte*) print_char_cursor#0 ) + (byte*) print_line_cursor#76 ← phi( @4/(byte*) print_line_cursor#0 ) + (byte*) print_screen#55 ← phi( @4/(byte*) print_screen#0 ) (byte[]) print_hextab#0 ← (const string) $69 - to:@15 + to:@18 print_cls: scope:[print_cls] from form_mode::@21 form_mode::@24 (byte*) print_screen#9 ← phi( form_mode::@21/(byte*) print_screen#5 form_mode::@24/(byte*) print_screen#6 ) (byte*) print_cls::sc#0 ← (byte*) print_screen#9 @@ -7153,10 +7255,10 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#26 return to:@return -@15: scope:[] from @11 - (byte*) print_char_cursor#75 ← phi( @11/(byte*) print_char_cursor#76 ) - (byte*) print_line_cursor#75 ← phi( @11/(byte*) print_line_cursor#76 ) - (byte*) print_screen#53 ← phi( @11/(byte*) print_screen#55 ) +@18: scope:[] from @14 + (byte*) print_char_cursor#75 ← phi( @14/(byte*) print_char_cursor#76 ) + (byte*) print_line_cursor#75 ← phi( @14/(byte*) print_line_cursor#76 ) + (byte*) print_screen#53 ← phi( @14/(byte*) print_screen#55 ) (byte) KEY_CRSR_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) KEY_CRSR_DOWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) KEY_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 @@ -7166,7 +7268,7 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen (byte) KEY_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 61 (byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@19 + to:@22 keyboard_init: scope:[keyboard_init] from main *((byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 *((byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -7186,10 +7288,10 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (byte) keyboard_matrix_read::return#1 ← (byte) keyboard_matrix_read::return#3 return to:@return -@19: scope:[] from @15 - (byte*) print_char_cursor#74 ← phi( @15/(byte*) print_char_cursor#75 ) - (byte*) print_line_cursor#74 ← phi( @15/(byte*) print_line_cursor#75 ) - (byte*) print_screen#51 ← phi( @15/(byte*) print_screen#53 ) +@22: scope:[] from @18 + (byte*) print_char_cursor#74 ← phi( @18/(byte*) print_char_cursor#75 ) + (byte*) print_line_cursor#74 ← phi( @18/(byte*) print_line_cursor#75 ) + (byte*) print_screen#51 ← phi( @18/(byte*) print_screen#53 ) (byte[8]) keyboard_events#0 ← { fill( 8, 0) } (byte) keyboard_events_size#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_modifiers#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -7200,7 +7302,7 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT#0 | (byte) KEY_MODIFIER_RSHIFT#0 (byte) KEY_MODIFIER_SHIFT#0 ← (byte~) $0 (byte[8]) keyboard_scan_values#0 ← { fill( 8, 0) } - to:@22 + to:@25 keyboard_event_scan: scope:[keyboard_event_scan] from form_control::@3 gfx_mode::@21 (byte) keyboard_events_size#110 ← phi( form_control::@3/(byte) keyboard_events_size#48 gfx_mode::@21/(byte) keyboard_events_size#44 ) (byte) keyboard_event_scan::keycode#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -7456,18 +7558,18 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get (byte) keyboard_events_size#5 ← (byte) keyboard_events_size#24 return to:@return -@22: scope:[] from @19 - (byte) keyboard_modifiers#106 ← phi( @19/(byte) keyboard_modifiers#0 ) - (byte) keyboard_events_size#122 ← phi( @19/(byte) keyboard_events_size#0 ) - (byte*) print_char_cursor#72 ← phi( @19/(byte*) print_char_cursor#74 ) - (byte*) print_line_cursor#72 ← phi( @19/(byte*) print_line_cursor#74 ) - (byte*) print_screen#49 ← phi( @19/(byte*) print_screen#51 ) +@25: scope:[] from @22 + (byte) keyboard_modifiers#106 ← phi( @22/(byte) keyboard_modifiers#0 ) + (byte) keyboard_events_size#122 ← phi( @22/(byte) keyboard_events_size#0 ) + (byte*) print_char_cursor#72 ← phi( @22/(byte*) print_char_cursor#74 ) + (byte*) print_line_cursor#72 ← phi( @22/(byte*) print_line_cursor#74 ) + (byte*) print_screen#49 ← phi( @22/(byte*) print_screen#51 ) (byte[256]) bitmap_plot_xlo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_xhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) } - to:@31 + to:@34 bitmap_init: scope:[bitmap_init] from gfx_init_vic_bitmap (byte*) bitmap_init::bitmap#2 ← phi( gfx_init_vic_bitmap/(byte*) bitmap_init::bitmap#0 ) (byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128 @@ -8011,15 +8113,15 @@ bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@5 bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 return to:@return -main: scope:[main] from @59 - (byte) form_fields_cnt#72 ← phi( @59/(byte) form_fields_cnt#73 ) - (byte) form_field_idx#55 ← phi( @59/(byte) form_field_idx#36 ) - (byte) keyboard_modifiers#94 ← phi( @59/(byte) keyboard_modifiers#53 ) - (byte) keyboard_events_size#101 ← phi( @59/(byte) keyboard_events_size#53 ) - (signed byte) form_cursor_count#47 ← phi( @59/(signed byte) form_cursor_count#26 ) - (byte*) print_char_cursor#63 ← phi( @59/(byte*) print_char_cursor#46 ) - (byte*) print_line_cursor#63 ← phi( @59/(byte*) print_line_cursor#44 ) - (byte*) print_screen#40 ← phi( @59/(byte*) print_screen#25 ) +main: scope:[main] from @62 + (byte) form_fields_cnt#72 ← phi( @62/(byte) form_fields_cnt#73 ) + (byte) form_field_idx#55 ← phi( @62/(byte) form_field_idx#36 ) + (byte) keyboard_modifiers#94 ← phi( @62/(byte) keyboard_modifiers#53 ) + (byte) keyboard_events_size#101 ← phi( @62/(byte) keyboard_events_size#53 ) + (signed byte) form_cursor_count#47 ← phi( @62/(signed byte) form_cursor_count#26 ) + (byte*) print_char_cursor#63 ← phi( @62/(byte*) print_char_cursor#46 ) + (byte*) print_line_cursor#63 ← phi( @62/(byte*) print_line_cursor#44 ) + (byte*) print_screen#40 ← phi( @62/(byte*) print_screen#25 ) asm { sei } *((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0 *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0 @@ -8116,12 +8218,12 @@ main::@return: scope:[main] from main::@1 (byte) form_field_idx#1 ← (byte) form_field_idx#12 return to:@return -@31: scope:[] from @22 - (byte) keyboard_modifiers#101 ← phi( @22/(byte) keyboard_modifiers#106 ) - (byte) keyboard_events_size#113 ← phi( @22/(byte) keyboard_events_size#122 ) - (byte*) print_char_cursor#69 ← phi( @22/(byte*) print_char_cursor#72 ) - (byte*) print_line_cursor#69 ← phi( @22/(byte*) print_line_cursor#72 ) - (byte*) print_screen#46 ← phi( @22/(byte*) print_screen#49 ) +@34: scope:[] from @25 + (byte) keyboard_modifiers#101 ← phi( @25/(byte) keyboard_modifiers#106 ) + (byte) keyboard_events_size#113 ← phi( @25/(byte) keyboard_events_size#122 ) + (byte*) print_char_cursor#69 ← phi( @25/(byte*) print_char_cursor#72 ) + (byte*) print_line_cursor#69 ← phi( @25/(byte*) print_line_cursor#72 ) + (byte*) print_screen#46 ← phi( @25/(byte*) print_screen#49 ) (byte*) VIC_SCREEN0#0 ← ((byte*)) (word/signed word/dword/signed dword) 16384 (byte*) VIC_SCREEN1#0 ← ((byte*)) (word/signed word/dword/signed dword) 17408 (byte*) VIC_SCREEN2#0 ← ((byte*)) (word/signed word/dword/signed dword) 18432 @@ -8137,7 +8239,7 @@ main::@return: scope:[main] from main::@1 (dword) PLANE_BLANK#0 ← (dword/signed dword) 229376 (dword) PLANE_FULL#0 ← (dword/signed dword) 237568 (dword) PLANE_CHARSET8#0 ← (dword/signed dword) 245760 - to:@34 + to:@37 get_plane: scope:[get_plane] from gfx_mode::@46 gfx_mode::@9 (byte) get_plane::idx#2 ← phi( gfx_mode::@46/(byte) get_plane::idx#1 gfx_mode::@9/(byte) get_plane::idx#0 ) (bool~) get_plane::$0 ← (byte) get_plane::idx#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -8354,12 +8456,12 @@ get_vic_charset::@return: scope:[get_vic_charset] from get_vic_charset::@1 get_ get_vic_charset::@3: scope:[get_vic_charset] from get_vic_charset::@2 (byte*) get_vic_charset::return#3 ← (byte*) VIC_CHARSET_ROM#0 to:get_vic_charset::@return -@34: scope:[] from @31 - (byte) keyboard_modifiers#95 ← phi( @31/(byte) keyboard_modifiers#101 ) - (byte) keyboard_events_size#102 ← phi( @31/(byte) keyboard_events_size#113 ) - (byte*) print_char_cursor#64 ← phi( @31/(byte*) print_char_cursor#69 ) - (byte*) print_line_cursor#64 ← phi( @31/(byte*) print_line_cursor#69 ) - (byte*) print_screen#41 ← phi( @31/(byte*) print_screen#46 ) +@37: scope:[] from @34 + (byte) keyboard_modifiers#95 ← phi( @34/(byte) keyboard_modifiers#101 ) + (byte) keyboard_events_size#102 ← phi( @34/(byte) keyboard_events_size#113 ) + (byte*) print_char_cursor#64 ← phi( @34/(byte*) print_char_cursor#69 ) + (byte*) print_line_cursor#64 ← phi( @34/(byte*) print_line_cursor#69 ) + (byte*) print_screen#41 ← phi( @34/(byte*) print_screen#46 ) (byte*) FORM_SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) FORM_CHARSET#0 ← ((byte*)) (word/signed word/dword/signed dword) 6144 (string~) $1 ← (const string) $70 + (const string) $71 @@ -8411,7 +8513,7 @@ get_vic_charset::@3: scope:[get_vic_charset] from get_vic_charset::@2 (byte[]) preset_sixsfred#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 9, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } (byte[]) preset_sixsfred2#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 9, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 9, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } (byte[]) preset_8bpppixelcell#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } - to:@36 + to:@39 apply_preset: scope:[apply_preset] from form_mode::@18 (byte) form_fields_cnt#23 ← phi( form_mode::@18/(byte) form_fields_cnt#37 ) (byte) apply_preset::idx#1 ← phi( form_mode::@18/(byte) apply_preset::idx#0 ) @@ -8648,13 +8750,13 @@ render_preset_name::@45: scope:[render_preset_name] from render_preset_name::@2 render_preset_name::@return: scope:[render_preset_name] from render_preset_name::@45 return to:@return -@36: scope:[] from @34 - (byte) form_fields_cnt#75 ← phi( @34/(byte) form_fields_cnt#0 ) - (byte) keyboard_modifiers#88 ← phi( @34/(byte) keyboard_modifiers#95 ) - (byte) keyboard_events_size#91 ← phi( @34/(byte) keyboard_events_size#102 ) - (byte*) print_char_cursor#62 ← phi( @34/(byte*) print_char_cursor#64 ) - (byte*) print_line_cursor#61 ← phi( @34/(byte*) print_line_cursor#64 ) - (byte*) print_screen#39 ← phi( @34/(byte*) print_screen#41 ) +@39: scope:[] from @37 + (byte) form_fields_cnt#75 ← phi( @37/(byte) form_fields_cnt#0 ) + (byte) keyboard_modifiers#88 ← phi( @37/(byte) keyboard_modifiers#95 ) + (byte) keyboard_events_size#91 ← phi( @37/(byte) keyboard_events_size#102 ) + (byte*) print_char_cursor#62 ← phi( @37/(byte*) print_char_cursor#64 ) + (byte*) print_line_cursor#61 ← phi( @37/(byte*) print_line_cursor#64 ) + (byte*) print_screen#39 ← phi( @37/(byte*) print_screen#41 ) (byte*~) $32 ← (byte[]) form_fields_val#0 + (byte/signed byte/word/signed word/dword/signed dword) 0 (byte*) form_preset#0 ← (byte*~) $32 (byte*~) $33 ← (byte[]) form_fields_val#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -8727,7 +8829,7 @@ render_preset_name::@return: scope:[render_preset_name] from render_preset_name (byte*) form_vic_bg3_hi#0 ← (byte*~) $66 (byte*~) $67 ← (byte[]) form_fields_val#0 + (byte/signed byte/word/signed word/dword/signed dword) 35 (byte*) form_vic_bg3_lo#0 ← (byte*~) $67 - to:@55 + to:@58 gfx_mode: scope:[gfx_mode] from main::@9 (byte) keyboard_modifiers#139 ← phi( main::@9/(byte) keyboard_modifiers#7 ) (byte) keyboard_events_size#159 ← phi( main::@9/(byte) keyboard_events_size#6 ) @@ -10203,20 +10305,20 @@ form_mode::@33: scope:[form_mode] from form_mode::@32 (byte*) print_line_cursor#50 ← phi( form_mode::@32/(byte*) print_line_cursor#60 ) (byte*) print_screen#30 ← phi( form_mode::@32/(byte*) print_screen#38 ) to:form_mode::@2 -@55: scope:[] from @36 - (byte) form_fields_cnt#74 ← phi( @36/(byte) form_fields_cnt#75 ) - (byte) keyboard_modifiers#77 ← phi( @36/(byte) keyboard_modifiers#88 ) - (byte) keyboard_events_size#77 ← phi( @36/(byte) keyboard_events_size#91 ) - (byte*) print_char_cursor#56 ← phi( @36/(byte*) print_char_cursor#62 ) - (byte*) print_line_cursor#53 ← phi( @36/(byte*) print_line_cursor#61 ) - (byte*) print_screen#33 ← phi( @36/(byte*) print_screen#39 ) +@58: scope:[] from @39 + (byte) form_fields_cnt#74 ← phi( @39/(byte) form_fields_cnt#75 ) + (byte) keyboard_modifiers#77 ← phi( @39/(byte) keyboard_modifiers#88 ) + (byte) keyboard_events_size#77 ← phi( @39/(byte) keyboard_events_size#91 ) + (byte*) print_char_cursor#56 ← phi( @39/(byte*) print_char_cursor#62 ) + (byte*) print_line_cursor#53 ← phi( @39/(byte*) print_line_cursor#61 ) + (byte*) print_screen#33 ← phi( @39/(byte*) print_screen#39 ) (byte[25]) form_line_lo#0 ← { fill( 25, 0) } (byte[25]) form_line_hi#0 ← { fill( 25, 0) } (byte) form_field_idx#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (signed byte) FORM_CURSOR_BLINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 (signed word/signed byte/signed dword~) $68 ← (signed byte) FORM_CURSOR_BLINK#0 / (byte/signed byte/word/signed word/dword/signed dword) 2 (signed byte) form_cursor_count#4 ← (signed word/signed byte/signed dword~) $68 - to:@59 + to:@62 form_set_screen: scope:[form_set_screen] from form_mode::@26 (byte*) form_set_screen::screen#1 ← phi( form_mode::@26/(byte*) form_set_screen::screen#0 ) (byte*) form_set_screen::line#0 ← (byte*) form_set_screen::screen#1 @@ -10558,25 +10660,25 @@ form_control::@30: scope:[form_control] from form_control::@9 (signed byte) form_cursor_count#25 ← phi( form_control::@9/(signed byte) form_cursor_count#37 ) (byte) form_control::return#5 ← (byte/word/signed word/dword/signed dword) 255 to:form_control::@return -@59: scope:[] from @55 - (byte) form_fields_cnt#73 ← phi( @55/(byte) form_fields_cnt#74 ) - (byte) form_field_idx#36 ← phi( @55/(byte) form_field_idx#4 ) - (byte) keyboard_modifiers#53 ← phi( @55/(byte) keyboard_modifiers#77 ) - (byte) keyboard_events_size#53 ← phi( @55/(byte) keyboard_events_size#77 ) - (signed byte) form_cursor_count#26 ← phi( @55/(signed byte) form_cursor_count#4 ) - (byte*) print_char_cursor#46 ← phi( @55/(byte*) print_char_cursor#56 ) - (byte*) print_line_cursor#44 ← phi( @55/(byte*) print_line_cursor#53 ) - (byte*) print_screen#25 ← phi( @55/(byte*) print_screen#33 ) +@62: scope:[] from @58 + (byte) form_fields_cnt#73 ← phi( @58/(byte) form_fields_cnt#74 ) + (byte) form_field_idx#36 ← phi( @58/(byte) form_field_idx#4 ) + (byte) keyboard_modifiers#53 ← phi( @58/(byte) keyboard_modifiers#77 ) + (byte) keyboard_events_size#53 ← phi( @58/(byte) keyboard_events_size#77 ) + (signed byte) form_cursor_count#26 ← phi( @58/(signed byte) form_cursor_count#4 ) + (byte*) print_char_cursor#46 ← phi( @58/(byte*) print_char_cursor#56 ) + (byte*) print_line_cursor#44 ← phi( @58/(byte*) print_line_cursor#53 ) + (byte*) print_screen#25 ← phi( @58/(byte*) print_screen#33 ) call main - to:@60 -@60: scope:[] from @59 - (byte) form_field_idx#24 ← phi( @59/(byte) form_field_idx#1 ) - (byte) keyboard_modifiers#33 ← phi( @59/(byte) keyboard_modifiers#9 ) - (byte) keyboard_events_size#36 ← phi( @59/(byte) keyboard_events_size#8 ) - (signed byte) form_cursor_count#17 ← phi( @59/(signed byte) form_cursor_count#1 ) - (byte*) print_char_cursor#36 ← phi( @59/(byte*) print_char_cursor#11 ) - (byte*) print_line_cursor#35 ← phi( @59/(byte*) print_line_cursor#10 ) - (byte*) print_screen#18 ← phi( @59/(byte*) print_screen#4 ) + to:@63 +@63: scope:[] from @62 + (byte) form_field_idx#24 ← phi( @62/(byte) form_field_idx#1 ) + (byte) keyboard_modifiers#33 ← phi( @62/(byte) keyboard_modifiers#9 ) + (byte) keyboard_events_size#36 ← phi( @62/(byte) keyboard_events_size#8 ) + (signed byte) form_cursor_count#17 ← phi( @62/(signed byte) form_cursor_count#1 ) + (byte*) print_char_cursor#36 ← phi( @62/(byte*) print_char_cursor#11 ) + (byte*) print_line_cursor#35 ← phi( @62/(byte*) print_line_cursor#10 ) + (byte*) print_screen#18 ← phi( @62/(byte*) print_screen#4 ) (byte*) print_screen#8 ← (byte*) print_screen#18 (byte*) print_line_cursor#18 ← (byte*) print_line_cursor#35 (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#36 @@ -10585,7 +10687,7 @@ form_control::@30: scope:[form_control] from form_control::@9 (byte) keyboard_modifiers#16 ← (byte) keyboard_modifiers#33 (byte) form_field_idx#10 ← (byte) form_field_idx#24 to:@end -@end: scope:[] from @60 +@end: scope:[] from @63 SYMBOL TABLE SSA (byte~) $0 @@ -10691,17 +10793,18 @@ SYMBOL TABLE SSA (const string) $97 = (string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @" (const string) $98 = (string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @" (const string) $99 = (string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @" -(label) @1 -(label) @11 -(label) @15 -(label) @19 +(label) @14 +(label) @18 (label) @22 -(label) @31 +(label) @25 +(label) @3 (label) @34 -(label) @36 -(label) @55 -(label) @59 -(label) @60 +(label) @37 +(label) @39 +(label) @4 +(label) @58 +(label) @62 +(label) @63 (label) @begin (label) @end (byte*) BGCOL @@ -16286,25 +16389,26 @@ Eliminating Noop Cast (byte*) form_field_ptr::line#0 ← ((byte*)) (word~) form_ Succesful SSA optimization Pass2NopCastElimination Removing unused block main::@return Succesful SSA optimization Pass2EliminateUnusedBlocks -Culled Empty Block (label) @1 +Culled Empty Block (label) @3 +Culled Empty Block (label) @4 Culled Empty Block (label) print_str_lines::@2 Culled Empty Block (label) print_str_lines::@11 Culled Empty Block (label) print_ln::@2 -Culled Empty Block (label) @11 +Culled Empty Block (label) @14 Culled Empty Block (label) print_cls::@2 -Culled Empty Block (label) @15 -Culled Empty Block (label) @19 +Culled Empty Block (label) @18 +Culled Empty Block (label) @22 Culled Empty Block (label) keyboard_event_scan::@2 Culled Empty Block (label) keyboard_event_scan::@6 Not culling empty block because it shares successor with its predecessor. (label) keyboard_event_scan::@21 Culled Empty Block (label) keyboard_event_scan::@12 Culled Empty Block (label) keyboard_event_get::@1 -Culled Empty Block (label) @22 +Culled Empty Block (label) @25 Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5 Culled Empty Block (label) bitmap_init::@6 Culled Empty Block (label) main::@8 Culled Empty Block (label) main::@10 -Culled Empty Block (label) @31 +Culled Empty Block (label) @34 Culled Empty Block (label) get_plane::@1 Culled Empty Block (label) get_plane::@2 Culled Empty Block (label) get_plane::@3 @@ -16329,7 +16433,7 @@ Not culling empty block because it shares successor with its predecessor. (label Culled Empty Block (label) get_vic_charset::@1 Culled Empty Block (label) get_vic_charset::@5 Not culling empty block because it shares successor with its predecessor. (label) get_vic_charset::@3 -Culled Empty Block (label) @34 +Culled Empty Block (label) @37 Culled Empty Block (label) apply_preset::@1 Culled Empty Block (label) apply_preset::@2 Culled Empty Block (label) apply_preset::@3 @@ -16354,7 +16458,7 @@ Culled Empty Block (label) render_preset_name::@9 Culled Empty Block (label) render_preset_name::@10 Culled Empty Block (label) render_preset_name::@11 Not culling empty block because it shares successor with its predecessor. (label) render_preset_name::@33 -Culled Empty Block (label) @36 +Culled Empty Block (label) @39 Not culling empty block because it shares successor with its predecessor. (label) gfx_mode::@23 Not culling empty block because it shares successor with its predecessor. (label) gfx_mode::@29 Not culling empty block because it shares successor with its predecessor. (label) gfx_mode::@31 @@ -16373,7 +16477,7 @@ Culled Empty Block (label) form_mode::@3 Culled Empty Block (label) form_mode::@6 Culled Empty Block (label) form_mode::@9 Culled Empty Block (label) form_mode::@33 -Culled Empty Block (label) @55 +Culled Empty Block (label) @58 Not culling empty block because it shares successor with its predecessor. (label) form_control::@15 Culled Empty Block (label) form_control::@6 Culled Empty Block (label) form_control::@8 @@ -16382,7 +16486,7 @@ Culled Empty Block (label) form_control::@11 Culled Empty Block (label) form_control::@13 Culled Empty Block (label) form_control::@14 Not culling empty block because it shares successor with its predecessor. (label) form_control::@30 -Culled Empty Block (label) @60 +Culled Empty Block (label) @63 Succesful SSA optimization Pass2CullEmptyBlocks Not culling empty block because it shares successor with its predecessor. (label) keyboard_event_scan::@21 Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5 @@ -17927,7 +18031,7 @@ Inlining constant with var siblings (const string) render_preset_name::name#8 Inlining constant with var siblings (const string) render_preset_name::name#9 Inlining constant with var siblings (const string) render_preset_name::name#10 Inlining constant with var siblings (const string) render_preset_name::name#11 -Block Sequence Planned @begin @59 @end main main::@7 main::@1 main::@2 main::@9 gfx_mode gfx_mode::@23 gfx_mode::@1 gfx_mode::@24 gfx_mode::@2 gfx_mode::@25 gfx_mode::@3 gfx_mode::@26 gfx_mode::@4 gfx_mode::@27 gfx_mode::@5 gfx_mode::@28 gfx_mode::@6 gfx_mode::@29 gfx_mode::@7 gfx_mode::@30 gfx_mode::@8 gfx_mode::@31 gfx_mode::@9 gfx_mode::@46 gfx_mode::@47 gfx_mode::@48 gfx_mode::@49 gfx_mode::@50 gfx_mode::@10 gfx_mode::@11 gfx_mode::@32 gfx_mode::@33 gfx_mode::@13 gfx_mode::@19 gfx_mode::@21 gfx_mode::@51 gfx_mode::@52 gfx_mode::@return gfx_mode::@15 keyboard_event_get keyboard_event_get::@3 keyboard_event_get::@return keyboard_event_scan keyboard_event_scan::@1 keyboard_event_scan::@25 keyboard_event_scan::@13 keyboard_event_scan::@3 keyboard_event_scan::@20 keyboard_event_scan::@26 keyboard_event_scan::@21 keyboard_event_scan::@9 keyboard_event_scan::@27 keyboard_event_scan::@22 keyboard_event_scan::@10 keyboard_event_scan::@28 keyboard_event_scan::@23 keyboard_event_scan::@11 keyboard_event_scan::@29 keyboard_event_scan::@24 keyboard_event_scan::@return keyboard_event_scan::@4 keyboard_event_scan::@15 keyboard_event_scan::@16 keyboard_event_scan::@17 keyboard_event_scan::@5 keyboard_event_scan::@19 keyboard_event_scan::@7 keyboard_event_pressed keyboard_event_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return get_vic_screen get_vic_screen::@10 get_vic_screen::@11 get_vic_screen::@12 get_vic_screen::@13 get_vic_screen::@return get_vic_screen::@9 get_vic_charset get_vic_charset::@4 get_vic_charset::@return get_vic_charset::@3 get_plane get_plane::@28 get_plane::@29 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@39 get_plane::@40 get_plane::@return get_plane::@27 form_mode form_mode::@21 form_mode::@22 form_mode::@23 form_mode::@24 form_mode::@25 form_mode::@26 form_mode::@27 form_mode::@28 form_mode::@29 form_mode::@1 form_mode::@10 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@30 form_mode::@return form_mode::@8 form_mode::@18 form_mode::@31 form_mode::@32 render_preset_name render_preset_name::@23 render_preset_name::@24 render_preset_name::@25 render_preset_name::@26 render_preset_name::@27 render_preset_name::@28 render_preset_name::@29 render_preset_name::@30 render_preset_name::@31 render_preset_name::@32 render_preset_name::@33 render_preset_name::@22 render_preset_name::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2 form_render_values form_render_values::@1 form_render_values::@3 form_render_values::@return form_field_ptr form_field_ptr::@return apply_preset apply_preset::@24 apply_preset::@25 apply_preset::@26 apply_preset::@27 apply_preset::@28 apply_preset::@29 apply_preset::@30 apply_preset::@31 apply_preset::@32 apply_preset::@33 apply_preset::@34 apply_preset::@22 apply_preset::@23 apply_preset::@return form_control form_control::@33 form_control::@15 form_control::@1 form_control::@16 form_control::@3 form_control::@34 form_control::@35 form_control::@18 form_control::@19 form_control::@20 form_control::@7 form_control::@return form_control::@5 form_control::@22 form_control::@4 form_control::@24 form_control::@25 form_control::@26 form_control::@12 form_control::@10 form_control::@28 form_control::@9 form_control::@30 form_control::@2 form_set_screen form_set_screen::@1 form_set_screen::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return gfx_init gfx_init::@1 gfx_init::@2 gfx_init::@3 gfx_init::@4 gfx_init::@5 gfx_init::@6 gfx_init::@7 gfx_init::@8 gfx_init::@9 gfx_init::@10 gfx_init::@11 gfx_init::@12 gfx_init::@13 gfx_init::@14 gfx_init::@return gfx_init_plane_full gfx_init_plane_full::@return gfx_init_plane_fill gfx_init_plane_fill::@5 gfx_init_plane_fill::@1 gfx_init_plane_fill::@2 gfx_init_plane_fill::@3 gfx_init_plane_fill::@4 gfx_init_plane_fill::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_plane_blank gfx_init_plane_blank::@return gfx_init_plane_vertical2 gfx_init_plane_vertical2::@return gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@3 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal2::@return gfx_init_plane_vertical gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@2 gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@4 gfx_init_plane_vertical::@return gfx_init_plane_horisontal gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@5 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal::@8 gfx_init_plane_horisontal::@return gfx_init_plane_horisontal::@3 gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@8 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@6 gfx_init_plane_8bppchunky::@return gfx_init_vic_bitmap gfx_init_vic_bitmap::@3 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@5 gfx_init_vic_bitmap::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return gfx_init_charset gfx_init_charset::@1 gfx_init_charset::@2 gfx_init_charset::@3 gfx_init_charset::@4 gfx_init_charset::@return gfx_init_screen4 gfx_init_screen4::@1 gfx_init_screen4::@2 gfx_init_screen4::@3 gfx_init_screen4::@return gfx_init_screen3 gfx_init_screen3::@1 gfx_init_screen3::@2 gfx_init_screen3::@3 gfx_init_screen3::@return gfx_init_screen2 gfx_init_screen2::@1 gfx_init_screen2::@2 gfx_init_screen2::@3 gfx_init_screen2::@return gfx_init_screen1 gfx_init_screen1::@1 gfx_init_screen1::@2 gfx_init_screen1::@3 gfx_init_screen1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return keyboard_init keyboard_init::@return +Block Sequence Planned @begin @62 @end main main::@7 main::@1 main::@2 main::@9 gfx_mode gfx_mode::@23 gfx_mode::@1 gfx_mode::@24 gfx_mode::@2 gfx_mode::@25 gfx_mode::@3 gfx_mode::@26 gfx_mode::@4 gfx_mode::@27 gfx_mode::@5 gfx_mode::@28 gfx_mode::@6 gfx_mode::@29 gfx_mode::@7 gfx_mode::@30 gfx_mode::@8 gfx_mode::@31 gfx_mode::@9 gfx_mode::@46 gfx_mode::@47 gfx_mode::@48 gfx_mode::@49 gfx_mode::@50 gfx_mode::@10 gfx_mode::@11 gfx_mode::@32 gfx_mode::@33 gfx_mode::@13 gfx_mode::@19 gfx_mode::@21 gfx_mode::@51 gfx_mode::@52 gfx_mode::@return gfx_mode::@15 keyboard_event_get keyboard_event_get::@3 keyboard_event_get::@return keyboard_event_scan keyboard_event_scan::@1 keyboard_event_scan::@25 keyboard_event_scan::@13 keyboard_event_scan::@3 keyboard_event_scan::@20 keyboard_event_scan::@26 keyboard_event_scan::@21 keyboard_event_scan::@9 keyboard_event_scan::@27 keyboard_event_scan::@22 keyboard_event_scan::@10 keyboard_event_scan::@28 keyboard_event_scan::@23 keyboard_event_scan::@11 keyboard_event_scan::@29 keyboard_event_scan::@24 keyboard_event_scan::@return keyboard_event_scan::@4 keyboard_event_scan::@15 keyboard_event_scan::@16 keyboard_event_scan::@17 keyboard_event_scan::@5 keyboard_event_scan::@19 keyboard_event_scan::@7 keyboard_event_pressed keyboard_event_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return get_vic_screen get_vic_screen::@10 get_vic_screen::@11 get_vic_screen::@12 get_vic_screen::@13 get_vic_screen::@return get_vic_screen::@9 get_vic_charset get_vic_charset::@4 get_vic_charset::@return get_vic_charset::@3 get_plane get_plane::@28 get_plane::@29 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@39 get_plane::@40 get_plane::@return get_plane::@27 form_mode form_mode::@21 form_mode::@22 form_mode::@23 form_mode::@24 form_mode::@25 form_mode::@26 form_mode::@27 form_mode::@28 form_mode::@29 form_mode::@1 form_mode::@10 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@30 form_mode::@return form_mode::@8 form_mode::@18 form_mode::@31 form_mode::@32 render_preset_name render_preset_name::@23 render_preset_name::@24 render_preset_name::@25 render_preset_name::@26 render_preset_name::@27 render_preset_name::@28 render_preset_name::@29 render_preset_name::@30 render_preset_name::@31 render_preset_name::@32 render_preset_name::@33 render_preset_name::@22 render_preset_name::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2 form_render_values form_render_values::@1 form_render_values::@3 form_render_values::@return form_field_ptr form_field_ptr::@return apply_preset apply_preset::@24 apply_preset::@25 apply_preset::@26 apply_preset::@27 apply_preset::@28 apply_preset::@29 apply_preset::@30 apply_preset::@31 apply_preset::@32 apply_preset::@33 apply_preset::@34 apply_preset::@22 apply_preset::@23 apply_preset::@return form_control form_control::@33 form_control::@15 form_control::@1 form_control::@16 form_control::@3 form_control::@34 form_control::@35 form_control::@18 form_control::@19 form_control::@20 form_control::@7 form_control::@return form_control::@5 form_control::@22 form_control::@4 form_control::@24 form_control::@25 form_control::@26 form_control::@12 form_control::@10 form_control::@28 form_control::@9 form_control::@30 form_control::@2 form_set_screen form_set_screen::@1 form_set_screen::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return gfx_init gfx_init::@1 gfx_init::@2 gfx_init::@3 gfx_init::@4 gfx_init::@5 gfx_init::@6 gfx_init::@7 gfx_init::@8 gfx_init::@9 gfx_init::@10 gfx_init::@11 gfx_init::@12 gfx_init::@13 gfx_init::@14 gfx_init::@return gfx_init_plane_full gfx_init_plane_full::@return gfx_init_plane_fill gfx_init_plane_fill::@5 gfx_init_plane_fill::@1 gfx_init_plane_fill::@2 gfx_init_plane_fill::@3 gfx_init_plane_fill::@4 gfx_init_plane_fill::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_plane_blank gfx_init_plane_blank::@return gfx_init_plane_vertical2 gfx_init_plane_vertical2::@return gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@3 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal2::@return gfx_init_plane_vertical gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@2 gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@4 gfx_init_plane_vertical::@return gfx_init_plane_horisontal gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@5 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal::@8 gfx_init_plane_horisontal::@return gfx_init_plane_horisontal::@3 gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@8 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@6 gfx_init_plane_8bppchunky::@return gfx_init_vic_bitmap gfx_init_vic_bitmap::@3 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@5 gfx_init_vic_bitmap::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return gfx_init_charset gfx_init_charset::@1 gfx_init_charset::@2 gfx_init_charset::@3 gfx_init_charset::@4 gfx_init_charset::@return gfx_init_screen4 gfx_init_screen4::@1 gfx_init_screen4::@2 gfx_init_screen4::@3 gfx_init_screen4::@return gfx_init_screen3 gfx_init_screen3::@1 gfx_init_screen3::@2 gfx_init_screen3::@3 gfx_init_screen3::@return gfx_init_screen2 gfx_init_screen2::@1 gfx_init_screen2::@2 gfx_init_screen2::@3 gfx_init_screen2::@return gfx_init_screen1 gfx_init_screen1::@1 gfx_init_screen1::@2 gfx_init_screen1::@3 gfx_init_screen1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return keyboard_init keyboard_init::@return Added new block during phi lifting gfx_mode::@53(between gfx_mode::@1 and gfx_mode::@2) Added new block during phi lifting gfx_mode::@54(between gfx_mode::@2 and gfx_mode::@3) Added new block during phi lifting gfx_mode::@55(between gfx_mode::@3 and gfx_mode::@4) @@ -18005,9 +18109,9 @@ Added new block during phi lifting gfx_init_screen1::@5(between gfx_init_screen1 Added new block during phi lifting gfx_init_screen1::@6(between gfx_init_screen1::@2 and gfx_init_screen1::@2) Added new block during phi lifting gfx_init_screen0::@5(between gfx_init_screen0::@3 and gfx_init_screen0::@1) Added new block during phi lifting gfx_init_screen0::@6(between gfx_init_screen0::@2 and gfx_init_screen0::@2) -Block Sequence Planned @begin @59 @end main main::@7 main::@1 main::@2 main::@9 gfx_mode gfx_mode::@23 gfx_mode::@1 gfx_mode::@24 gfx_mode::@2 gfx_mode::@25 gfx_mode::@3 gfx_mode::@26 gfx_mode::@4 gfx_mode::@27 gfx_mode::@5 gfx_mode::@28 gfx_mode::@6 gfx_mode::@29 gfx_mode::@7 gfx_mode::@30 gfx_mode::@8 gfx_mode::@31 gfx_mode::@9 gfx_mode::@46 gfx_mode::@47 gfx_mode::@48 gfx_mode::@49 gfx_mode::@50 gfx_mode::@10 gfx_mode::@11 gfx_mode::@32 gfx_mode::@33 gfx_mode::@13 gfx_mode::@19 gfx_mode::@21 gfx_mode::@51 gfx_mode::@52 gfx_mode::@return gfx_mode::@61 gfx_mode::@15 gfx_mode::@62 gfx_mode::@59 gfx_mode::@60 gfx_mode::@58 gfx_mode::@57 gfx_mode::@56 gfx_mode::@55 gfx_mode::@54 gfx_mode::@53 keyboard_event_get keyboard_event_get::@3 keyboard_event_get::@return keyboard_event_get::@7 keyboard_event_scan keyboard_event_scan::@1 keyboard_event_scan::@25 keyboard_event_scan::@13 keyboard_event_scan::@3 keyboard_event_scan::@20 keyboard_event_scan::@26 keyboard_event_scan::@21 keyboard_event_scan::@9 keyboard_event_scan::@27 keyboard_event_scan::@22 keyboard_event_scan::@10 keyboard_event_scan::@28 keyboard_event_scan::@23 keyboard_event_scan::@11 keyboard_event_scan::@29 keyboard_event_scan::@24 keyboard_event_scan::@return keyboard_event_scan::@33 keyboard_event_scan::@32 keyboard_event_scan::@31 keyboard_event_scan::@30 keyboard_event_scan::@35 keyboard_event_scan::@4 keyboard_event_scan::@15 keyboard_event_scan::@16 keyboard_event_scan::@17 keyboard_event_scan::@5 keyboard_event_scan::@19 keyboard_event_scan::@34 keyboard_event_scan::@7 keyboard_event_scan::@37 keyboard_event_scan::@36 keyboard_event_pressed keyboard_event_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return get_vic_screen get_vic_screen::@10 get_vic_screen::@11 get_vic_screen::@12 get_vic_screen::@13 get_vic_screen::@return get_vic_screen::@9 get_vic_charset get_vic_charset::@4 get_vic_charset::@return get_vic_charset::@3 get_plane get_plane::@28 get_plane::@29 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@39 get_plane::@40 get_plane::@return get_plane::@27 form_mode form_mode::@21 form_mode::@22 form_mode::@23 form_mode::@24 form_mode::@25 form_mode::@26 form_mode::@27 form_mode::@28 form_mode::@29 form_mode::@1 form_mode::@10 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@30 form_mode::@return form_mode::@8 form_mode::@18 form_mode::@31 form_mode::@32 form_mode::@35 form_mode::@34 render_preset_name render_preset_name::@23 render_preset_name::@24 render_preset_name::@25 render_preset_name::@26 render_preset_name::@27 render_preset_name::@28 render_preset_name::@29 render_preset_name::@30 render_preset_name::@31 render_preset_name::@32 render_preset_name::@33 render_preset_name::@22 render_preset_name::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2 form_render_values form_render_values::@1 form_render_values::@3 form_render_values::@return form_render_values::@4 form_field_ptr form_field_ptr::@return apply_preset apply_preset::@24 apply_preset::@25 apply_preset::@26 apply_preset::@27 apply_preset::@28 apply_preset::@29 apply_preset::@30 apply_preset::@31 apply_preset::@32 apply_preset::@33 apply_preset::@34 apply_preset::@22 apply_preset::@23 apply_preset::@return apply_preset::@47 form_control form_control::@33 form_control::@15 form_control::@1 form_control::@16 form_control::@3 form_control::@34 form_control::@35 form_control::@18 form_control::@19 form_control::@20 form_control::@7 form_control::@return form_control::@37 form_control::@5 form_control::@22 form_control::@38 form_control::@4 form_control::@24 form_control::@25 form_control::@26 form_control::@12 form_control::@10 form_control::@28 form_control::@9 form_control::@30 form_control::@39 form_control::@2 form_control::@36 form_set_screen form_set_screen::@1 form_set_screen::@return form_set_screen::@3 print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@12 print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_str_lines::@13 print_str_lines::@14 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_cls print_cls::@1 print_cls::@return print_cls::@3 print_set_screen print_set_screen::@return gfx_init gfx_init::@1 gfx_init::@2 gfx_init::@3 gfx_init::@4 gfx_init::@5 gfx_init::@6 gfx_init::@7 gfx_init::@8 gfx_init::@9 gfx_init::@10 gfx_init::@11 gfx_init::@12 gfx_init::@13 gfx_init::@14 gfx_init::@return gfx_init_plane_full gfx_init_plane_full::@return gfx_init_plane_fill gfx_init_plane_fill::@5 gfx_init_plane_fill::@1 gfx_init_plane_fill::@2 gfx_init_plane_fill::@3 gfx_init_plane_fill::@4 gfx_init_plane_fill::@return gfx_init_plane_fill::@7 gfx_init_plane_fill::@8 dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_plane_blank gfx_init_plane_blank::@return gfx_init_plane_vertical2 gfx_init_plane_vertical2::@return gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@3 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal2::@return gfx_init_plane_horisontal2::@7 gfx_init_plane_horisontal2::@8 gfx_init_plane_vertical gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@2 gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@4 gfx_init_plane_vertical::@return gfx_init_plane_vertical::@7 gfx_init_plane_vertical::@8 gfx_init_plane_horisontal gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@5 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal::@8 gfx_init_plane_horisontal::@return gfx_init_plane_horisontal::@11 gfx_init_plane_horisontal::@12 gfx_init_plane_horisontal::@3 gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return gfx_init_plane_charset8::@11 gfx_init_plane_charset8::@12 gfx_init_plane_charset8::@13 gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@8 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@6 gfx_init_plane_8bppchunky::@return gfx_init_plane_8bppchunky::@10 gfx_init_plane_8bppchunky::@11 gfx_init_plane_8bppchunky::@12 gfx_init_vic_bitmap gfx_init_vic_bitmap::@3 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@5 gfx_init_vic_bitmap::@return gfx_init_vic_bitmap::@6 bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_line_xdyi::@6 bitmap_line_xdyi::@7 bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_ydxi::@6 bitmap_line_ydxi::@7 bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_xdyd::@6 bitmap_line_xdyd::@7 bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_line_ydxd::@6 bitmap_line_ydxd::@7 bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_clear::@5 bitmap_clear::@6 bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@11 bitmap_init::@12 bitmap_init::@9 bitmap_init::@10 gfx_init_charset gfx_init_charset::@1 gfx_init_charset::@2 gfx_init_charset::@3 gfx_init_charset::@4 gfx_init_charset::@return gfx_init_charset::@5 gfx_init_charset::@6 gfx_init_screen4 gfx_init_screen4::@1 gfx_init_screen4::@2 gfx_init_screen4::@3 gfx_init_screen4::@return gfx_init_screen4::@5 gfx_init_screen4::@6 gfx_init_screen3 gfx_init_screen3::@1 gfx_init_screen3::@2 gfx_init_screen3::@3 gfx_init_screen3::@return gfx_init_screen3::@5 gfx_init_screen3::@6 gfx_init_screen2 gfx_init_screen2::@1 gfx_init_screen2::@2 gfx_init_screen2::@3 gfx_init_screen2::@return gfx_init_screen2::@5 gfx_init_screen2::@6 gfx_init_screen1 gfx_init_screen1::@1 gfx_init_screen1::@2 gfx_init_screen1::@3 gfx_init_screen1::@return gfx_init_screen1::@5 gfx_init_screen1::@6 gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return gfx_init_screen0::@5 gfx_init_screen0::@6 keyboard_init keyboard_init::@return +Block Sequence Planned @begin @62 @end main main::@7 main::@1 main::@2 main::@9 gfx_mode gfx_mode::@23 gfx_mode::@1 gfx_mode::@24 gfx_mode::@2 gfx_mode::@25 gfx_mode::@3 gfx_mode::@26 gfx_mode::@4 gfx_mode::@27 gfx_mode::@5 gfx_mode::@28 gfx_mode::@6 gfx_mode::@29 gfx_mode::@7 gfx_mode::@30 gfx_mode::@8 gfx_mode::@31 gfx_mode::@9 gfx_mode::@46 gfx_mode::@47 gfx_mode::@48 gfx_mode::@49 gfx_mode::@50 gfx_mode::@10 gfx_mode::@11 gfx_mode::@32 gfx_mode::@33 gfx_mode::@13 gfx_mode::@19 gfx_mode::@21 gfx_mode::@51 gfx_mode::@52 gfx_mode::@return gfx_mode::@61 gfx_mode::@15 gfx_mode::@62 gfx_mode::@59 gfx_mode::@60 gfx_mode::@58 gfx_mode::@57 gfx_mode::@56 gfx_mode::@55 gfx_mode::@54 gfx_mode::@53 keyboard_event_get keyboard_event_get::@3 keyboard_event_get::@return keyboard_event_get::@7 keyboard_event_scan keyboard_event_scan::@1 keyboard_event_scan::@25 keyboard_event_scan::@13 keyboard_event_scan::@3 keyboard_event_scan::@20 keyboard_event_scan::@26 keyboard_event_scan::@21 keyboard_event_scan::@9 keyboard_event_scan::@27 keyboard_event_scan::@22 keyboard_event_scan::@10 keyboard_event_scan::@28 keyboard_event_scan::@23 keyboard_event_scan::@11 keyboard_event_scan::@29 keyboard_event_scan::@24 keyboard_event_scan::@return keyboard_event_scan::@33 keyboard_event_scan::@32 keyboard_event_scan::@31 keyboard_event_scan::@30 keyboard_event_scan::@35 keyboard_event_scan::@4 keyboard_event_scan::@15 keyboard_event_scan::@16 keyboard_event_scan::@17 keyboard_event_scan::@5 keyboard_event_scan::@19 keyboard_event_scan::@34 keyboard_event_scan::@7 keyboard_event_scan::@37 keyboard_event_scan::@36 keyboard_event_pressed keyboard_event_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return get_vic_screen get_vic_screen::@10 get_vic_screen::@11 get_vic_screen::@12 get_vic_screen::@13 get_vic_screen::@return get_vic_screen::@9 get_vic_charset get_vic_charset::@4 get_vic_charset::@return get_vic_charset::@3 get_plane get_plane::@28 get_plane::@29 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@39 get_plane::@40 get_plane::@return get_plane::@27 form_mode form_mode::@21 form_mode::@22 form_mode::@23 form_mode::@24 form_mode::@25 form_mode::@26 form_mode::@27 form_mode::@28 form_mode::@29 form_mode::@1 form_mode::@10 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@30 form_mode::@return form_mode::@8 form_mode::@18 form_mode::@31 form_mode::@32 form_mode::@35 form_mode::@34 render_preset_name render_preset_name::@23 render_preset_name::@24 render_preset_name::@25 render_preset_name::@26 render_preset_name::@27 render_preset_name::@28 render_preset_name::@29 render_preset_name::@30 render_preset_name::@31 render_preset_name::@32 render_preset_name::@33 render_preset_name::@22 render_preset_name::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2 form_render_values form_render_values::@1 form_render_values::@3 form_render_values::@return form_render_values::@4 form_field_ptr form_field_ptr::@return apply_preset apply_preset::@24 apply_preset::@25 apply_preset::@26 apply_preset::@27 apply_preset::@28 apply_preset::@29 apply_preset::@30 apply_preset::@31 apply_preset::@32 apply_preset::@33 apply_preset::@34 apply_preset::@22 apply_preset::@23 apply_preset::@return apply_preset::@47 form_control form_control::@33 form_control::@15 form_control::@1 form_control::@16 form_control::@3 form_control::@34 form_control::@35 form_control::@18 form_control::@19 form_control::@20 form_control::@7 form_control::@return form_control::@37 form_control::@5 form_control::@22 form_control::@38 form_control::@4 form_control::@24 form_control::@25 form_control::@26 form_control::@12 form_control::@10 form_control::@28 form_control::@9 form_control::@30 form_control::@39 form_control::@2 form_control::@36 form_set_screen form_set_screen::@1 form_set_screen::@return form_set_screen::@3 print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@12 print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_str_lines::@13 print_str_lines::@14 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_cls print_cls::@1 print_cls::@return print_cls::@3 print_set_screen print_set_screen::@return gfx_init gfx_init::@1 gfx_init::@2 gfx_init::@3 gfx_init::@4 gfx_init::@5 gfx_init::@6 gfx_init::@7 gfx_init::@8 gfx_init::@9 gfx_init::@10 gfx_init::@11 gfx_init::@12 gfx_init::@13 gfx_init::@14 gfx_init::@return gfx_init_plane_full gfx_init_plane_full::@return gfx_init_plane_fill gfx_init_plane_fill::@5 gfx_init_plane_fill::@1 gfx_init_plane_fill::@2 gfx_init_plane_fill::@3 gfx_init_plane_fill::@4 gfx_init_plane_fill::@return gfx_init_plane_fill::@7 gfx_init_plane_fill::@8 dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_plane_blank gfx_init_plane_blank::@return gfx_init_plane_vertical2 gfx_init_plane_vertical2::@return gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@3 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal2::@return gfx_init_plane_horisontal2::@7 gfx_init_plane_horisontal2::@8 gfx_init_plane_vertical gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@2 gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@4 gfx_init_plane_vertical::@return gfx_init_plane_vertical::@7 gfx_init_plane_vertical::@8 gfx_init_plane_horisontal gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@5 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal::@8 gfx_init_plane_horisontal::@return gfx_init_plane_horisontal::@11 gfx_init_plane_horisontal::@12 gfx_init_plane_horisontal::@3 gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return gfx_init_plane_charset8::@11 gfx_init_plane_charset8::@12 gfx_init_plane_charset8::@13 gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@8 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@6 gfx_init_plane_8bppchunky::@return gfx_init_plane_8bppchunky::@10 gfx_init_plane_8bppchunky::@11 gfx_init_plane_8bppchunky::@12 gfx_init_vic_bitmap gfx_init_vic_bitmap::@3 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@5 gfx_init_vic_bitmap::@return gfx_init_vic_bitmap::@6 bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_line_xdyi::@6 bitmap_line_xdyi::@7 bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_ydxi::@6 bitmap_line_ydxi::@7 bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_xdyd::@6 bitmap_line_xdyd::@7 bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_line_ydxd::@6 bitmap_line_ydxd::@7 bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_clear::@5 bitmap_clear::@6 bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@11 bitmap_init::@12 bitmap_init::@9 bitmap_init::@10 gfx_init_charset gfx_init_charset::@1 gfx_init_charset::@2 gfx_init_charset::@3 gfx_init_charset::@4 gfx_init_charset::@return gfx_init_charset::@5 gfx_init_charset::@6 gfx_init_screen4 gfx_init_screen4::@1 gfx_init_screen4::@2 gfx_init_screen4::@3 gfx_init_screen4::@return gfx_init_screen4::@5 gfx_init_screen4::@6 gfx_init_screen3 gfx_init_screen3::@1 gfx_init_screen3::@2 gfx_init_screen3::@3 gfx_init_screen3::@return gfx_init_screen3::@5 gfx_init_screen3::@6 gfx_init_screen2 gfx_init_screen2::@1 gfx_init_screen2::@2 gfx_init_screen2::@3 gfx_init_screen2::@return gfx_init_screen2::@5 gfx_init_screen2::@6 gfx_init_screen1 gfx_init_screen1::@1 gfx_init_screen1::@2 gfx_init_screen1::@3 gfx_init_screen1::@return gfx_init_screen1::@5 gfx_init_screen1::@6 gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return gfx_init_screen0::@5 gfx_init_screen0::@6 keyboard_init keyboard_init::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @59 +Adding NOP phi() at start of @62 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@7 Adding NOP phi() at start of main::@2 @@ -18616,9 +18720,9 @@ Culled Empty Block (label) gfx_init_screen1::@5 Culled Empty Block (label) gfx_init_screen1::@6 Culled Empty Block (label) gfx_init_screen0::@5 Culled Empty Block (label) gfx_init_screen0::@6 -Block Sequence Planned @begin @59 @end main main::@7 main::@1 main::@2 main::@9 gfx_mode gfx_mode::@23 gfx_mode::@1 gfx_mode::@24 gfx_mode::@2 gfx_mode::@25 gfx_mode::@3 gfx_mode::@26 gfx_mode::@4 gfx_mode::@27 gfx_mode::@5 gfx_mode::@28 gfx_mode::@6 gfx_mode::@29 gfx_mode::@7 gfx_mode::@30 gfx_mode::@8 gfx_mode::@31 gfx_mode::@9 gfx_mode::@46 gfx_mode::@47 gfx_mode::@48 gfx_mode::@49 gfx_mode::@50 gfx_mode::@10 gfx_mode::@11 gfx_mode::@32 gfx_mode::@33 gfx_mode::@13 gfx_mode::@19 gfx_mode::@21 gfx_mode::@51 gfx_mode::@52 gfx_mode::@return gfx_mode::@15 keyboard_event_get keyboard_event_get::@3 keyboard_event_get::@return keyboard_event_scan keyboard_event_scan::@1 keyboard_event_scan::@25 keyboard_event_scan::@13 keyboard_event_scan::@3 keyboard_event_scan::@20 keyboard_event_scan::@26 keyboard_event_scan::@21 keyboard_event_scan::@9 keyboard_event_scan::@27 keyboard_event_scan::@22 keyboard_event_scan::@10 keyboard_event_scan::@28 keyboard_event_scan::@23 keyboard_event_scan::@11 keyboard_event_scan::@29 keyboard_event_scan::@24 keyboard_event_scan::@return keyboard_event_scan::@4 keyboard_event_scan::@15 keyboard_event_scan::@16 keyboard_event_scan::@17 keyboard_event_scan::@5 keyboard_event_scan::@19 keyboard_event_scan::@7 keyboard_event_pressed keyboard_event_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return get_vic_screen get_vic_screen::@10 get_vic_screen::@11 get_vic_screen::@12 get_vic_screen::@13 get_vic_screen::@return get_vic_screen::@9 get_vic_charset get_vic_charset::@4 get_vic_charset::@return get_vic_charset::@3 get_plane get_plane::@28 get_plane::@29 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@39 get_plane::@40 get_plane::@return get_plane::@27 form_mode form_mode::@21 form_mode::@22 form_mode::@23 form_mode::@24 form_mode::@25 form_mode::@26 form_mode::@27 form_mode::@28 form_mode::@29 form_mode::@1 form_mode::@10 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@30 form_mode::@return form_mode::@8 form_mode::@18 form_mode::@31 form_mode::@32 render_preset_name render_preset_name::@23 render_preset_name::@24 render_preset_name::@25 render_preset_name::@26 render_preset_name::@27 render_preset_name::@28 render_preset_name::@29 render_preset_name::@30 render_preset_name::@31 render_preset_name::@32 render_preset_name::@33 render_preset_name::@22 render_preset_name::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2 form_render_values form_render_values::@1 form_render_values::@3 form_render_values::@return form_field_ptr form_field_ptr::@return apply_preset apply_preset::@24 apply_preset::@25 apply_preset::@26 apply_preset::@27 apply_preset::@28 apply_preset::@29 apply_preset::@30 apply_preset::@31 apply_preset::@32 apply_preset::@33 apply_preset::@34 apply_preset::@22 apply_preset::@23 apply_preset::@return form_control form_control::@33 form_control::@1 form_control::@16 form_control::@3 form_control::@34 form_control::@35 form_control::@18 form_control::@19 form_control::@7 form_control::@return form_control::@37 form_control::@5 form_control::@38 form_control::@4 form_control::@24 form_control::@25 form_control::@26 form_control::@12 form_control::@10 form_control::@28 form_control::@9 form_control::@39 form_control::@2 form_control::@36 form_set_screen form_set_screen::@1 form_set_screen::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return gfx_init gfx_init::@1 gfx_init::@2 gfx_init::@3 gfx_init::@4 gfx_init::@5 gfx_init::@6 gfx_init::@7 gfx_init::@8 gfx_init::@9 gfx_init::@10 gfx_init::@11 gfx_init::@12 gfx_init::@13 gfx_init::@14 gfx_init::@return gfx_init_plane_full gfx_init_plane_full::@return gfx_init_plane_fill gfx_init_plane_fill::@5 gfx_init_plane_fill::@1 gfx_init_plane_fill::@2 gfx_init_plane_fill::@3 gfx_init_plane_fill::@4 gfx_init_plane_fill::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_plane_blank gfx_init_plane_blank::@return gfx_init_plane_vertical2 gfx_init_plane_vertical2::@return gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@3 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal2::@return gfx_init_plane_vertical gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@2 gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@4 gfx_init_plane_vertical::@return gfx_init_plane_horisontal gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@5 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal::@8 gfx_init_plane_horisontal::@return gfx_init_plane_horisontal::@3 gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@8 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@6 gfx_init_plane_8bppchunky::@return gfx_init_vic_bitmap gfx_init_vic_bitmap::@3 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@5 gfx_init_vic_bitmap::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@10 gfx_init_charset gfx_init_charset::@1 gfx_init_charset::@2 gfx_init_charset::@3 gfx_init_charset::@4 gfx_init_charset::@return gfx_init_screen4 gfx_init_screen4::@1 gfx_init_screen4::@2 gfx_init_screen4::@3 gfx_init_screen4::@return gfx_init_screen3 gfx_init_screen3::@1 gfx_init_screen3::@2 gfx_init_screen3::@3 gfx_init_screen3::@return gfx_init_screen2 gfx_init_screen2::@1 gfx_init_screen2::@2 gfx_init_screen2::@3 gfx_init_screen2::@return gfx_init_screen1 gfx_init_screen1::@1 gfx_init_screen1::@2 gfx_init_screen1::@3 gfx_init_screen1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return keyboard_init keyboard_init::@return +Block Sequence Planned @begin @62 @end main main::@7 main::@1 main::@2 main::@9 gfx_mode gfx_mode::@23 gfx_mode::@1 gfx_mode::@24 gfx_mode::@2 gfx_mode::@25 gfx_mode::@3 gfx_mode::@26 gfx_mode::@4 gfx_mode::@27 gfx_mode::@5 gfx_mode::@28 gfx_mode::@6 gfx_mode::@29 gfx_mode::@7 gfx_mode::@30 gfx_mode::@8 gfx_mode::@31 gfx_mode::@9 gfx_mode::@46 gfx_mode::@47 gfx_mode::@48 gfx_mode::@49 gfx_mode::@50 gfx_mode::@10 gfx_mode::@11 gfx_mode::@32 gfx_mode::@33 gfx_mode::@13 gfx_mode::@19 gfx_mode::@21 gfx_mode::@51 gfx_mode::@52 gfx_mode::@return gfx_mode::@15 keyboard_event_get keyboard_event_get::@3 keyboard_event_get::@return keyboard_event_scan keyboard_event_scan::@1 keyboard_event_scan::@25 keyboard_event_scan::@13 keyboard_event_scan::@3 keyboard_event_scan::@20 keyboard_event_scan::@26 keyboard_event_scan::@21 keyboard_event_scan::@9 keyboard_event_scan::@27 keyboard_event_scan::@22 keyboard_event_scan::@10 keyboard_event_scan::@28 keyboard_event_scan::@23 keyboard_event_scan::@11 keyboard_event_scan::@29 keyboard_event_scan::@24 keyboard_event_scan::@return keyboard_event_scan::@4 keyboard_event_scan::@15 keyboard_event_scan::@16 keyboard_event_scan::@17 keyboard_event_scan::@5 keyboard_event_scan::@19 keyboard_event_scan::@7 keyboard_event_pressed keyboard_event_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return get_vic_screen get_vic_screen::@10 get_vic_screen::@11 get_vic_screen::@12 get_vic_screen::@13 get_vic_screen::@return get_vic_screen::@9 get_vic_charset get_vic_charset::@4 get_vic_charset::@return get_vic_charset::@3 get_plane get_plane::@28 get_plane::@29 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@39 get_plane::@40 get_plane::@return get_plane::@27 form_mode form_mode::@21 form_mode::@22 form_mode::@23 form_mode::@24 form_mode::@25 form_mode::@26 form_mode::@27 form_mode::@28 form_mode::@29 form_mode::@1 form_mode::@10 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@30 form_mode::@return form_mode::@8 form_mode::@18 form_mode::@31 form_mode::@32 render_preset_name render_preset_name::@23 render_preset_name::@24 render_preset_name::@25 render_preset_name::@26 render_preset_name::@27 render_preset_name::@28 render_preset_name::@29 render_preset_name::@30 render_preset_name::@31 render_preset_name::@32 render_preset_name::@33 render_preset_name::@22 render_preset_name::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2 form_render_values form_render_values::@1 form_render_values::@3 form_render_values::@return form_field_ptr form_field_ptr::@return apply_preset apply_preset::@24 apply_preset::@25 apply_preset::@26 apply_preset::@27 apply_preset::@28 apply_preset::@29 apply_preset::@30 apply_preset::@31 apply_preset::@32 apply_preset::@33 apply_preset::@34 apply_preset::@22 apply_preset::@23 apply_preset::@return form_control form_control::@33 form_control::@1 form_control::@16 form_control::@3 form_control::@34 form_control::@35 form_control::@18 form_control::@19 form_control::@7 form_control::@return form_control::@37 form_control::@5 form_control::@38 form_control::@4 form_control::@24 form_control::@25 form_control::@26 form_control::@12 form_control::@10 form_control::@28 form_control::@9 form_control::@39 form_control::@2 form_control::@36 form_set_screen form_set_screen::@1 form_set_screen::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return gfx_init gfx_init::@1 gfx_init::@2 gfx_init::@3 gfx_init::@4 gfx_init::@5 gfx_init::@6 gfx_init::@7 gfx_init::@8 gfx_init::@9 gfx_init::@10 gfx_init::@11 gfx_init::@12 gfx_init::@13 gfx_init::@14 gfx_init::@return gfx_init_plane_full gfx_init_plane_full::@return gfx_init_plane_fill gfx_init_plane_fill::@5 gfx_init_plane_fill::@1 gfx_init_plane_fill::@2 gfx_init_plane_fill::@3 gfx_init_plane_fill::@4 gfx_init_plane_fill::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_plane_blank gfx_init_plane_blank::@return gfx_init_plane_vertical2 gfx_init_plane_vertical2::@return gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@3 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal2::@return gfx_init_plane_vertical gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@2 gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@4 gfx_init_plane_vertical::@return gfx_init_plane_horisontal gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@5 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal::@8 gfx_init_plane_horisontal::@return gfx_init_plane_horisontal::@3 gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@8 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@6 gfx_init_plane_8bppchunky::@return gfx_init_vic_bitmap gfx_init_vic_bitmap::@3 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@5 gfx_init_vic_bitmap::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@10 gfx_init_charset gfx_init_charset::@1 gfx_init_charset::@2 gfx_init_charset::@3 gfx_init_charset::@4 gfx_init_charset::@return gfx_init_screen4 gfx_init_screen4::@1 gfx_init_screen4::@2 gfx_init_screen4::@3 gfx_init_screen4::@return gfx_init_screen3 gfx_init_screen3::@1 gfx_init_screen3::@2 gfx_init_screen3::@3 gfx_init_screen3::@return gfx_init_screen2 gfx_init_screen2::@1 gfx_init_screen2::@2 gfx_init_screen2::@3 gfx_init_screen2::@return gfx_init_screen1 gfx_init_screen1::@1 gfx_init_screen1::@2 gfx_init_screen1::@3 gfx_init_screen1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return keyboard_init keyboard_init::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @59 +Adding NOP phi() at start of @62 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@7 Adding NOP phi() at start of main::@2 @@ -18817,14 +18921,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@59 -@59: scope:[] from @begin + to:@62 +@62: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @59 +@end: scope:[] from @62 [3] phi() [ ] ( ) -main: scope:[main] from @59 +main: scope:[main] from @62 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) @@ -20513,375 +20617,375 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init DOMINATORS @begin dominated by @begin -@59 dominated by @begin @59 -@end dominated by @end @begin @59 -main dominated by @begin @59 main -main::@7 dominated by @begin @59 main::@7 main -main::@1 dominated by @begin @59 main::@7 main::@1 main -main::@2 dominated by @begin @59 main::@7 main::@1 main::@2 main -main::@9 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 main -gfx_mode dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode main -gfx_mode::@23 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@23 main -gfx_mode::@1 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@1 main -gfx_mode::@24 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@1 gfx_mode::@24 main -gfx_mode::@2 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@2 gfx_mode::@1 main -gfx_mode::@25 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@2 gfx_mode::@1 gfx_mode::@25 main -gfx_mode::@3 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@3 gfx_mode::@2 gfx_mode::@1 main -gfx_mode::@26 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@3 gfx_mode::@2 gfx_mode::@1 gfx_mode::@26 main -gfx_mode::@4 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@2 gfx_mode::@1 main -gfx_mode::@27 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@2 gfx_mode::@1 gfx_mode::@27 main -gfx_mode::@5 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main -gfx_mode::@28 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 gfx_mode::@28 main -gfx_mode::@6 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main -gfx_mode::@29 dominated by @begin @59 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 gfx_mode::@29 main -gfx_mode::@7 dominated by @begin @59 main::@9 main::@7 gfx_mode::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main -gfx_mode::@30 dominated by @begin @59 main::@9 main::@7 gfx_mode::@7 main::@1 main::@2 gfx_mode::@30 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main -gfx_mode::@8 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main -gfx_mode::@31 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 main::@1 main::@2 gfx_mode::@31 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main -gfx_mode::@9 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main -gfx_mode::@46 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main -gfx_mode::@47 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main -gfx_mode::@48 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main -gfx_mode::@49 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main -gfx_mode::@50 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main gfx_mode::@50 -gfx_mode::@10 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@10 main gfx_mode::@50 -gfx_mode::@11 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@11 gfx_mode::@10 main gfx_mode::@50 -gfx_mode::@32 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@11 gfx_mode::@10 main gfx_mode::@50 -gfx_mode::@33 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@11 gfx_mode::@10 main gfx_mode::@50 -gfx_mode::@13 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@13 gfx_mode::@11 gfx_mode::@10 main gfx_mode::@50 -gfx_mode::@19 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@19 gfx_mode::@11 gfx_mode::@10 main gfx_mode::@50 -gfx_mode::@21 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@19 gfx_mode::@11 gfx_mode::@10 gfx_mode::@21 main gfx_mode::@50 -gfx_mode::@51 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@19 gfx_mode::@11 gfx_mode::@10 gfx_mode::@21 main gfx_mode::@51 gfx_mode::@50 -gfx_mode::@52 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@19 gfx_mode::@11 gfx_mode::@10 gfx_mode::@21 main gfx_mode::@52 gfx_mode::@51 gfx_mode::@50 -gfx_mode::@return dominated by gfx_mode::@return @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@19 gfx_mode::@11 gfx_mode::@10 gfx_mode::@21 main gfx_mode::@52 gfx_mode::@51 gfx_mode::@50 -gfx_mode::@15 dominated by @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@15 gfx_mode::@11 gfx_mode::@10 main gfx_mode::@50 -keyboard_event_get dominated by @begin @59 main::@7 main::@1 main::@2 main keyboard_event_get -keyboard_event_get::@3 dominated by keyboard_event_get::@3 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_get -keyboard_event_get::@return dominated by keyboard_event_get::@return @begin @59 main::@7 main::@1 main::@2 main keyboard_event_get -keyboard_event_scan dominated by keyboard_event_scan @begin @59 main::@7 main::@1 main::@2 main -keyboard_event_scan::@1 dominated by keyboard_event_scan keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main -keyboard_event_scan::@25 dominated by keyboard_event_scan keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 -keyboard_event_scan::@13 dominated by keyboard_event_scan keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@13 -keyboard_event_scan::@3 dominated by keyboard_event_scan keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 -keyboard_event_scan::@20 dominated by keyboard_event_scan keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@20 -keyboard_event_scan::@26 dominated by keyboard_event_scan keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@26 keyboard_event_scan::@20 -keyboard_event_scan::@21 dominated by keyboard_event_scan keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@26 keyboard_event_scan::@21 keyboard_event_scan::@20 -keyboard_event_scan::@9 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@26 keyboard_event_scan::@20 -keyboard_event_scan::@27 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 -keyboard_event_scan::@22 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@22 -keyboard_event_scan::@10 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@10 -keyboard_event_scan::@28 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@10 -keyboard_event_scan::@23 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@23 keyboard_event_scan::@10 -keyboard_event_scan::@11 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@10 keyboard_event_scan::@11 -keyboard_event_scan::@29 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@29 keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@10 keyboard_event_scan::@11 -keyboard_event_scan::@24 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@29 keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@24 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@10 keyboard_event_scan::@11 -keyboard_event_scan::@return dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 keyboard_event_scan::@return @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@29 keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@10 keyboard_event_scan::@11 -keyboard_event_scan::@4 dominated by keyboard_event_scan keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 -keyboard_event_scan::@15 dominated by keyboard_event_scan keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@15 -keyboard_event_scan::@16 dominated by keyboard_event_scan keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@16 keyboard_event_scan::@15 -keyboard_event_scan::@17 dominated by keyboard_event_scan keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@17 keyboard_event_scan::@16 keyboard_event_scan::@15 -keyboard_event_scan::@5 dominated by keyboard_event_scan keyboard_event_scan::@5 keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 -keyboard_event_scan::@19 dominated by keyboard_event_scan keyboard_event_scan::@5 keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@19 -keyboard_event_scan::@7 dominated by keyboard_event_scan keyboard_event_scan::@7 keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@16 keyboard_event_scan::@15 -keyboard_event_pressed dominated by keyboard_event_scan keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_event_pressed keyboard_event_scan::@25 keyboard_event_scan::@20 -keyboard_event_pressed::@return dominated by keyboard_event_scan keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @59 main::@7 keyboard_event_pressed::@return main::@1 main::@2 main keyboard_event_pressed keyboard_event_scan::@25 keyboard_event_scan::@20 -keyboard_matrix_read dominated by keyboard_event_scan keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_matrix_read -keyboard_matrix_read::@return dominated by keyboard_event_scan keyboard_event_scan::@1 @begin @59 main::@7 main::@1 main::@2 main keyboard_matrix_read keyboard_matrix_read::@return -get_vic_screen dominated by @begin get_vic_screen @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main -get_vic_screen::@10 dominated by @begin get_vic_screen get_vic_screen::@10 @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main -get_vic_screen::@11 dominated by @begin get_vic_screen get_vic_screen::@10 get_vic_screen::@11 @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main -get_vic_screen::@12 dominated by @begin get_vic_screen get_vic_screen::@10 get_vic_screen::@11 get_vic_screen::@12 @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main -get_vic_screen::@13 dominated by @begin get_vic_screen get_vic_screen::@10 get_vic_screen::@13 get_vic_screen::@11 get_vic_screen::@12 @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main -get_vic_screen::@return dominated by get_vic_screen::@return @begin get_vic_screen @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main -get_vic_screen::@9 dominated by @begin get_vic_screen get_vic_screen::@10 get_vic_screen::@13 get_vic_screen::@11 get_vic_screen::@12 @59 get_vic_screen::@9 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main -get_vic_charset dominated by get_vic_charset @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main -get_vic_charset::@4 dominated by get_vic_charset @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 get_vic_charset::@4 main -get_vic_charset::@return dominated by get_vic_charset @begin get_vic_charset::@return @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main -get_vic_charset::@3 dominated by get_vic_charset @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 get_vic_charset::@3 get_vic_charset::@4 main -get_plane dominated by get_plane @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main -get_plane::@28 dominated by get_plane @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 -get_plane::@29 dominated by get_plane @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 -get_plane::@30 dominated by get_plane get_plane::@30 @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 -get_plane::@31 dominated by get_plane get_plane::@30 get_plane::@31 @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 -get_plane::@32 dominated by get_plane get_plane::@30 get_plane::@31 get_plane::@32 @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 -get_plane::@33 dominated by get_plane get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 -get_plane::@34 dominated by get_plane get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 -get_plane::@35 dominated by get_plane get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 -get_plane::@36 dominated by get_plane get_plane::@36 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 -get_plane::@37 dominated by get_plane get_plane::@36 get_plane::@37 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 -get_plane::@38 dominated by get_plane get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 -get_plane::@39 dominated by get_plane get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@39 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 -get_plane::@40 dominated by get_plane get_plane::@40 get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@39 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 -get_plane::@return dominated by get_plane @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode get_plane::@return gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main -get_plane::@27 dominated by get_plane get_plane::@40 get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@39 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @59 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@27 get_plane::@28 get_plane::@29 -form_mode dominated by @begin @59 main::@7 main::@1 main::@2 main form_mode -form_mode::@21 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@21 main form_mode -form_mode::@22 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@21 form_mode::@22 main form_mode -form_mode::@23 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode -form_mode::@24 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@24 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode -form_mode::@25 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode -form_mode::@26 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode -form_mode::@27 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode -form_mode::@28 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode -form_mode::@29 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode -form_mode::@1 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode -form_mode::@10 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@10 form_mode -form_mode::@2 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@10 form_mode -form_mode::@5 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@10 form_mode -form_mode::@7 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode -form_mode::@30 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode -form_mode::@return dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@return form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode -form_mode::@8 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode -form_mode::@18 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -form_mode::@31 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@31 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -form_mode::@32 dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@32 form_mode::@31 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -render_preset_name dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode -render_preset_name::@23 dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode render_preset_name::@23 -render_preset_name::@24 dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode render_preset_name::@23 -render_preset_name::@25 dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode render_preset_name::@23 -render_preset_name::@26 dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 main form_mode::@28 form_mode render_preset_name::@23 -render_preset_name::@27 dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 form_mode render_preset_name::@23 -render_preset_name::@28 dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 render_preset_name::@28 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 form_mode render_preset_name::@23 -render_preset_name::@29 dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 render_preset_name::@28 form_mode::@24 render_preset_name::@29 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 form_mode render_preset_name::@23 -render_preset_name::@30 dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 render_preset_name::@28 form_mode::@24 render_preset_name::@29 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 render_preset_name::@30 form_mode render_preset_name::@23 -render_preset_name::@31 dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 render_preset_name::@28 form_mode::@24 render_preset_name::@29 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 render_preset_name::@31 render_preset_name::@30 form_mode render_preset_name::@23 -render_preset_name::@32 dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 render_preset_name::@28 form_mode::@24 render_preset_name::@29 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 render_preset_name::@31 render_preset_name::@32 render_preset_name::@30 form_mode render_preset_name::@23 -render_preset_name::@33 dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 render_preset_name::@28 form_mode::@24 render_preset_name::@29 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 render_preset_name::@31 render_preset_name::@32 render_preset_name::@33 render_preset_name::@30 form_mode render_preset_name::@23 -render_preset_name::@22 dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode render_preset_name::@22 -render_preset_name::@return dominated by render_preset_name render_preset_name::@return @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode render_preset_name::@22 -print_str_at dominated by render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 print_str_at form_mode render_preset_name::@22 -print_str_at::@1 dominated by print_str_at::@1 render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 print_str_at form_mode render_preset_name::@22 -print_str_at::@return dominated by print_str_at::@1 render_preset_name @begin @59 print_str_at::@return main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 print_str_at form_mode render_preset_name::@22 -print_str_at::@2 dominated by print_str_at::@1 print_str_at::@2 render_preset_name @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 print_str_at form_mode render_preset_name::@22 -form_render_values dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_render_values form_mode -form_render_values::@1 dominated by form_render_values::@1 @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_render_values form_mode -form_render_values::@3 dominated by form_render_values::@3 form_render_values::@1 @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_render_values form_mode -form_render_values::@return dominated by form_render_values::@3 form_render_values::@1 @begin @59 main::@7 main::@1 main::@2 form_render_values::@return form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_render_values form_mode -form_field_ptr dominated by form_field_ptr @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode -form_field_ptr::@return dominated by form_field_ptr @begin @59 main::@7 main::@1 form_field_ptr::@return main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode -apply_preset dominated by @begin @59 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@24 dominated by @begin @59 apply_preset::@24 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@25 dominated by @begin @59 apply_preset::@25 apply_preset::@24 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@26 dominated by @begin apply_preset::@26 @59 apply_preset::@25 apply_preset::@24 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@27 dominated by @begin apply_preset::@27 apply_preset::@26 @59 apply_preset::@25 apply_preset::@24 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@28 dominated by @begin apply_preset::@27 apply_preset::@26 apply_preset::@28 @59 apply_preset::@25 apply_preset::@24 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@29 dominated by @begin apply_preset::@27 apply_preset::@26 apply_preset::@29 apply_preset::@28 @59 apply_preset::@25 apply_preset::@24 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@30 dominated by apply_preset::@30 @begin apply_preset::@27 apply_preset::@26 apply_preset::@29 apply_preset::@28 @59 apply_preset::@25 apply_preset::@24 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@31 dominated by apply_preset::@30 apply_preset::@31 @begin apply_preset::@27 apply_preset::@26 apply_preset::@29 apply_preset::@28 @59 apply_preset::@25 apply_preset::@24 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@32 dominated by apply_preset::@30 apply_preset::@32 apply_preset::@31 @begin apply_preset::@27 apply_preset::@26 apply_preset::@29 apply_preset::@28 @59 apply_preset::@25 apply_preset::@24 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@33 dominated by apply_preset::@33 apply_preset::@30 apply_preset::@32 apply_preset::@31 @begin apply_preset::@27 apply_preset::@26 apply_preset::@29 apply_preset::@28 @59 apply_preset::@25 apply_preset::@24 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@34 dominated by apply_preset::@34 apply_preset::@33 apply_preset::@30 apply_preset::@32 apply_preset::@31 @begin apply_preset::@27 apply_preset::@26 apply_preset::@29 apply_preset::@28 @59 apply_preset::@25 apply_preset::@24 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@22 dominated by @begin @59 apply_preset::@22 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@23 dominated by @begin @59 apply_preset::@23 apply_preset::@22 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -apply_preset::@return dominated by apply_preset::@return @begin @59 apply_preset::@23 apply_preset::@22 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 -form_control dominated by @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@33 dominated by @begin @59 main::@7 main::@1 main::@2 form_control::@33 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@1 dominated by form_control::@1 @begin @59 main::@7 main::@1 main::@2 form_control::@33 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@16 dominated by form_control::@1 @begin @59 main::@7 main::@1 main::@2 form_control::@16 form_control::@33 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@3 dominated by form_control::@1 form_control::@3 @begin @59 main::@7 main::@1 main::@2 form_control::@33 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@34 dominated by form_control::@1 form_control::@3 @begin @59 main::@7 main::@1 main::@2 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@35 dominated by form_control::@1 form_control::@3 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@18 dominated by form_control::@1 form_control::@3 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@18 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@19 dominated by form_control::@1 form_control::@3 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@18 form_control::@19 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@7 dominated by form_control::@1 form_control::@3 form_control::@7 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@18 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@return dominated by form_control::@1 form_control::@3 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@return form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@37 dominated by form_control::@1 form_control::@3 @begin @59 main::@7 form_control::@35 form_control::@37 main::@1 main::@2 form_control::@18 form_control::@19 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@5 dominated by form_control::@1 form_control::@5 form_control::@3 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@18 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@38 dominated by form_control::@1 form_control::@5 form_control::@3 @begin @59 main::@7 form_control::@35 form_control::@38 main::@1 main::@2 form_control::@18 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@4 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@24 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@24 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@25 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@24 form_control::@25 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@26 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@24 form_control::@25 form_control::@26 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@12 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@24 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_control::@12 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@10 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@24 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_control::@10 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@28 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@24 form_control::@28 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_control::@10 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@9 dominated by form_control::@1 form_control::@4 form_control::@3 form_control::@9 @begin @59 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@39 dominated by form_control::@1 form_control::@4 form_control::@3 form_control::@9 @begin @59 main::@7 form_control::@35 form_control::@39 main::@1 main::@2 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@2 dominated by form_control::@1 form_control::@2 @begin @59 main::@7 main::@1 main::@2 form_control::@33 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_control::@36 dominated by @begin @59 main::@7 form_control::@36 main::@1 main::@2 form_control::@33 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control -form_set_screen dominated by form_set_screen @begin @59 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode -form_set_screen::@1 dominated by form_set_screen @begin @59 main::@7 main::@1 main::@2 form_set_screen::@1 form_mode::@25 form_mode::@24 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode -form_set_screen::@return dominated by form_set_screen @begin @59 main::@7 main::@1 main::@2 form_set_screen::@1 form_mode::@25 form_mode::@24 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_set_screen::@return form_mode -print_str_lines dominated by @begin @59 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode -print_str_lines::@1 dominated by @begin @59 print_str_lines::@1 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode -print_str_lines::@return dominated by @begin print_str_lines::@return @59 print_str_lines::@1 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode -print_str_lines::@4 dominated by @begin @59 print_str_lines::@1 print_str_lines::@4 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode -print_str_lines::@8 dominated by @begin @59 print_str_lines::@1 print_str_lines::@4 print_str_lines::@8 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode -print_str_lines::@5 dominated by @begin @59 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode -print_str_lines::@9 dominated by @begin print_str_lines::@9 @59 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode -print_ln dominated by print_ln @begin print_str_lines::@9 @59 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode -print_ln::@1 dominated by print_ln print_ln::@1 @begin print_str_lines::@9 @59 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode -print_ln::@return dominated by print_ln::@return print_ln print_ln::@1 @begin print_str_lines::@9 @59 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode -print_cls dominated by print_cls @begin @59 main::@7 main::@1 main::@2 form_mode::@21 main form_mode -print_cls::@1 dominated by print_cls @begin @59 print_cls::@1 main::@7 main::@1 main::@2 form_mode::@21 main form_mode -print_cls::@return dominated by print_cls @begin @59 print_cls::@1 main::@7 main::@1 main::@2 form_mode::@21 main print_cls::@return form_mode -print_set_screen dominated by @begin @59 main::@7 main::@1 main::@2 print_set_screen main form_mode -print_set_screen::@return dominated by @begin @59 main::@7 main::@1 main::@2 print_set_screen main form_mode print_set_screen::@return -gfx_init dominated by @begin @59 main::@7 main gfx_init -gfx_init::@1 dominated by @begin @59 main::@7 gfx_init::@1 main gfx_init -gfx_init::@2 dominated by @begin @59 main::@7 gfx_init::@2 gfx_init::@1 main gfx_init -gfx_init::@3 dominated by @begin @59 main::@7 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init::@4 dominated by @begin @59 main::@7 gfx_init::@4 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init::@5 dominated by @begin @59 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init::@6 dominated by @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init::@7 dominated by @begin @59 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init::@8 dominated by @begin @59 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init::@9 dominated by @begin @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init::@10 dominated by @begin gfx_init::@10 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init::@11 dominated by @begin gfx_init::@10 gfx_init::@11 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init::@12 dominated by @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init::@13 dominated by @begin gfx_init::@13 gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init::@14 dominated by @begin gfx_init::@13 gfx_init::@14 gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init::@return dominated by @begin gfx_init::@13 gfx_init::@14 gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 gfx_init::@return main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_full dominated by @begin gfx_init::@13 gfx_init::@14 gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_full main gfx_init -gfx_init_plane_full::@return dominated by @begin gfx_init::@13 gfx_init::@14 gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_full main gfx_init gfx_init_plane_full::@return -gfx_init_plane_fill dominated by gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_fill::@5 dominated by gfx_init_plane_fill::@5 gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_fill::@1 dominated by gfx_init_plane_fill::@1 gfx_init_plane_fill::@5 gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_fill::@2 dominated by gfx_init_plane_fill::@2 gfx_init_plane_fill::@1 gfx_init_plane_fill::@5 gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_fill::@3 dominated by gfx_init_plane_fill::@2 gfx_init_plane_fill::@1 gfx_init_plane_fill::@3 gfx_init_plane_fill::@5 gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_fill::@4 dominated by gfx_init_plane_fill::@2 gfx_init_plane_fill::@1 gfx_init_plane_fill::@4 gfx_init_plane_fill::@3 gfx_init_plane_fill::@5 gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_fill::@return dominated by gfx_init_plane_fill::@2 gfx_init_plane_fill::@1 gfx_init_plane_fill::@4 gfx_init_plane_fill::@3 gfx_init_plane_fill::@5 gfx_init_plane_fill::@return gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -dtvSetCpuBankSegment1 dominated by @begin @59 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 dtvSetCpuBankSegment1 main gfx_init -dtvSetCpuBankSegment1::@return dominated by dtvSetCpuBankSegment1::@return @begin @59 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 dtvSetCpuBankSegment1 main gfx_init -gfx_init_plane_blank dominated by gfx_init_plane_blank @begin gfx_init::@13 gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_blank::@return dominated by gfx_init_plane_blank gfx_init_plane_blank::@return @begin gfx_init::@13 gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_vertical2 dominated by gfx_init_plane_vertical2 @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_vertical2::@return dominated by gfx_init_plane_vertical2 @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_vertical2::@return main gfx_init -gfx_init_plane_horisontal2 dominated by @begin gfx_init::@10 gfx_init::@11 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_horisontal2 -gfx_init_plane_horisontal2::@1 dominated by @begin gfx_init_plane_horisontal2::@1 gfx_init::@10 gfx_init::@11 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_horisontal2 -gfx_init_plane_horisontal2::@2 dominated by @begin gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@1 gfx_init::@10 gfx_init::@11 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_horisontal2 -gfx_init_plane_horisontal2::@3 dominated by @begin gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@3 gfx_init::@10 gfx_init::@11 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_horisontal2 -gfx_init_plane_horisontal2::@4 dominated by @begin gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal2::@3 gfx_init::@10 gfx_init::@11 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_horisontal2 -gfx_init_plane_horisontal2::@return dominated by @begin gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal2::@3 gfx_init::@10 gfx_init::@11 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal2::@return main gfx_init gfx_init_plane_horisontal2 -gfx_init_plane_vertical dominated by @begin gfx_init::@10 @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_vertical -gfx_init_plane_vertical::@1 dominated by @begin gfx_init::@10 @59 main::@7 gfx_init_plane_vertical::@1 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_vertical -gfx_init_plane_vertical::@2 dominated by @begin gfx_init::@10 @59 main::@7 gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@2 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_vertical -gfx_init_plane_vertical::@3 dominated by @begin gfx_init::@10 @59 main::@7 gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@2 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_vertical -gfx_init_plane_vertical::@4 dominated by @begin gfx_init::@10 @59 main::@7 gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@4 gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@2 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_vertical -gfx_init_plane_vertical::@return dominated by gfx_init_plane_vertical::@return @begin gfx_init::@10 @59 main::@7 gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@4 gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@2 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_vertical -gfx_init_plane_horisontal dominated by @begin @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal main gfx_init -gfx_init_plane_horisontal::@1 dominated by @begin @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal main gfx_init -gfx_init_plane_horisontal::@2 dominated by @begin @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal main gfx_init -gfx_init_plane_horisontal::@5 dominated by @begin @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@5 gfx_init_plane_horisontal main gfx_init -gfx_init_plane_horisontal::@4 dominated by @begin @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal main gfx_init -gfx_init_plane_horisontal::@7 dominated by @begin @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal main gfx_init -gfx_init_plane_horisontal::@8 dominated by @begin @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal::@8 gfx_init_plane_horisontal main gfx_init -gfx_init_plane_horisontal::@return dominated by gfx_init_plane_horisontal::@return @begin @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal::@8 gfx_init_plane_horisontal main gfx_init -gfx_init_plane_horisontal::@3 dominated by @begin @59 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init_plane_horisontal::@3 gfx_init::@1 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal main gfx_init -gfx_init_plane_charset8 dominated by gfx_init_plane_charset8 @begin @59 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_charset8::@9 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 @59 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_charset8::@1 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 @59 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_charset8::@2 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 @59 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_charset8::@3 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 @59 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_charset8::@5 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 @59 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_charset8::@4 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 @59 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_charset8::@6 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 @59 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_charset8::@7 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 @59 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_charset8::@8 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 @59 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_charset8::@return dominated by gfx_init_plane_charset8::@return gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 @59 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_8bppchunky dominated by @begin @59 gfx_init_plane_8bppchunky main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_8bppchunky::@1 dominated by @begin gfx_init_plane_8bppchunky::@1 @59 gfx_init_plane_8bppchunky main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_8bppchunky::@2 dominated by @begin gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@1 @59 gfx_init_plane_8bppchunky main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_8bppchunky::@4 dominated by @begin gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@1 @59 gfx_init_plane_8bppchunky main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_8bppchunky::@8 dominated by @begin gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@8 @59 gfx_init_plane_8bppchunky main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_8bppchunky::@3 dominated by @begin gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@1 @59 gfx_init_plane_8bppchunky main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_8bppchunky::@5 dominated by @begin gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@1 @59 gfx_init_plane_8bppchunky main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_8bppchunky::@6 dominated by @begin gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@6 @59 gfx_init_plane_8bppchunky main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_plane_8bppchunky::@return dominated by @begin gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@6 @59 gfx_init_plane_8bppchunky main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_8bppchunky::@return main gfx_init -gfx_init_vic_bitmap dominated by gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_vic_bitmap::@3 dominated by gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@3 -gfx_init_vic_bitmap::@1 dominated by gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -gfx_init_vic_bitmap::@5 dominated by gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@5 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -gfx_init_vic_bitmap::@return dominated by gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@return gfx_init_vic_bitmap::@5 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line dominated by bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@15 dominated by bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@15 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@16 dominated by bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@16 bitmap_line::@15 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@17 dominated by bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@17 bitmap_line::@16 bitmap_line::@15 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@return dominated by bitmap_line::@return bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@3 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@3 @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@16 bitmap_line::@15 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@2 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@2 @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@15 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@20 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@2 @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@15 bitmap_line::@20 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@6 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@2 bitmap_line::@6 @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@15 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@1 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@23 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@23 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@24 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@24 bitmap_line::@23 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@10 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 @59 main::@7 bitmap_line::@10 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@23 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@9 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 bitmap_line::@9 @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@27 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 bitmap_line::@9 @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@27 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line::@13 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 bitmap_line::@9 @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 bitmap_line::@13 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_xdyi dominated by bitmap_line gfx_init_vic_bitmap @begin @59 bitmap_line_xdyi main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_xdyi::@1 dominated by bitmap_line gfx_init_vic_bitmap @begin @59 bitmap_line_xdyi main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_xdyi::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_xdyi::@5 dominated by bitmap_line gfx_init_vic_bitmap @begin @59 bitmap_line_xdyi main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_xdyi::@3 dominated by bitmap_line gfx_init_vic_bitmap @begin @59 bitmap_line_xdyi main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_xdyi::@2 dominated by bitmap_line gfx_init_vic_bitmap @begin @59 bitmap_line_xdyi main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_xdyi::@return dominated by bitmap_line gfx_init_vic_bitmap @begin @59 bitmap_line_xdyi main::@7 bitmap_line_xdyi::@return gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_plot dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_plot @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_plot::@return dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_plot bitmap_plot::@return @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_ydxi dominated by bitmap_line_ydxi bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_ydxi::@1 dominated by bitmap_line_ydxi bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxi::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_ydxi::@5 dominated by bitmap_line_ydxi bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxi::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 bitmap_line_ydxi::@5 -bitmap_line_ydxi::@3 dominated by bitmap_line_ydxi bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxi::@3 bitmap_line_ydxi::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 bitmap_line_ydxi::@5 -bitmap_line_ydxi::@2 dominated by bitmap_line_ydxi bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 bitmap_line_ydxi::@5 -bitmap_line_ydxi::@return dominated by bitmap_line_ydxi bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_ydxi::@return main gfx_init bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 bitmap_line_ydxi::@5 -bitmap_line_xdyd dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyd @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_xdyd::@1 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyd @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_xdyd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_xdyd::@5 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyd @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_xdyd::@5 bitmap_line_xdyd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_xdyd::@3 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyd @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_xdyd::@2 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyd @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_xdyd::@return dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyd @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_xdyd::@return main gfx_init bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_ydxd dominated by bitmap_line_ydxd bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_ydxd::@1 dominated by bitmap_line_ydxd bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_ydxd::@5 dominated by bitmap_line_ydxd bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxd::@5 bitmap_line_ydxd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_ydxd::@3 dominated by bitmap_line_ydxd bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 bitmap_line_ydxd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_ydxd::@2 dominated by bitmap_line_ydxd bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 bitmap_line_ydxd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_line_ydxd::@return dominated by bitmap_line_ydxd bitmap_line gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_ydxd::@return main gfx_init bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 bitmap_line_ydxd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 -bitmap_clear dominated by bitmap_clear gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@3 -bitmap_clear::@1 dominated by bitmap_clear gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_clear::@1 main gfx_init gfx_init_vic_bitmap::@3 -bitmap_clear::@2 dominated by bitmap_clear gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_clear::@1 bitmap_clear::@2 main gfx_init gfx_init_vic_bitmap::@3 -bitmap_clear::@3 dominated by bitmap_clear gfx_init_vic_bitmap @begin @59 bitmap_clear::@3 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_clear::@1 bitmap_clear::@2 main gfx_init gfx_init_vic_bitmap::@3 -bitmap_clear::@return dominated by bitmap_clear gfx_init_vic_bitmap @begin @59 bitmap_clear::@3 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@return main gfx_init gfx_init_vic_bitmap::@3 -bitmap_init dominated by gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init main gfx_init -bitmap_init::@1 dominated by gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@1 bitmap_init main gfx_init -bitmap_init::@2 dominated by gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@2 bitmap_init::@1 bitmap_init main gfx_init -bitmap_init::@3 dominated by gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init main gfx_init -bitmap_init::@7 dominated by gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@7 bitmap_init main gfx_init -bitmap_init::@4 dominated by gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 bitmap_init main gfx_init -bitmap_init::@return dominated by bitmap_init::@return gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 bitmap_init main gfx_init -bitmap_init::@10 dominated by gfx_init_vic_bitmap @begin @59 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@1 bitmap_init main gfx_init bitmap_init::@10 -gfx_init_charset dominated by @begin @59 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_charset -gfx_init_charset::@1 dominated by gfx_init_charset::@1 @begin @59 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_charset -gfx_init_charset::@2 dominated by gfx_init_charset::@2 gfx_init_charset::@1 @begin @59 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_charset -gfx_init_charset::@3 dominated by gfx_init_charset::@2 gfx_init_charset::@1 gfx_init_charset::@3 @begin @59 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_charset -gfx_init_charset::@4 dominated by gfx_init_charset::@2 gfx_init_charset::@1 gfx_init_charset::@4 gfx_init_charset::@3 @begin @59 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_charset -gfx_init_charset::@return dominated by gfx_init_charset::@2 gfx_init_charset::@1 gfx_init_charset::@4 gfx_init_charset::@3 @begin gfx_init_charset::@return @59 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_charset -gfx_init_screen4 dominated by gfx_init_screen4 @begin @59 main::@7 gfx_init::@4 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_screen4::@1 dominated by gfx_init_screen4 gfx_init_screen4::@1 @begin @59 main::@7 gfx_init::@4 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_screen4::@2 dominated by gfx_init_screen4 gfx_init_screen4::@2 gfx_init_screen4::@1 @begin @59 main::@7 gfx_init::@4 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_screen4::@3 dominated by gfx_init_screen4 gfx_init_screen4::@3 gfx_init_screen4::@2 gfx_init_screen4::@1 @begin @59 main::@7 gfx_init::@4 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_screen4::@return dominated by gfx_init_screen4 gfx_init_screen4::@return gfx_init_screen4::@3 gfx_init_screen4::@2 gfx_init_screen4::@1 @begin @59 main::@7 gfx_init::@4 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_screen3 dominated by gfx_init_screen3 @begin @59 main::@7 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init -gfx_init_screen3::@1 dominated by gfx_init_screen3 @begin @59 main::@7 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_screen3::@1 -gfx_init_screen3::@2 dominated by gfx_init_screen3 @begin @59 main::@7 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_screen3::@2 gfx_init_screen3::@1 -gfx_init_screen3::@3 dominated by gfx_init_screen3 @begin @59 main::@7 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_screen3::@3 gfx_init_screen3::@2 gfx_init_screen3::@1 -gfx_init_screen3::@return dominated by gfx_init_screen3 @begin @59 main::@7 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_screen3::@return gfx_init_screen3::@3 gfx_init_screen3::@2 gfx_init_screen3::@1 -gfx_init_screen2 dominated by gfx_init_screen2 @begin @59 main::@7 gfx_init::@2 gfx_init::@1 main gfx_init -gfx_init_screen2::@1 dominated by gfx_init_screen2 @begin @59 main::@7 gfx_init::@2 gfx_init::@1 gfx_init_screen2::@1 main gfx_init -gfx_init_screen2::@2 dominated by gfx_init_screen2 @begin @59 main::@7 gfx_init::@2 gfx_init::@1 gfx_init_screen2::@2 gfx_init_screen2::@1 main gfx_init -gfx_init_screen2::@3 dominated by gfx_init_screen2 @begin @59 main::@7 gfx_init::@2 gfx_init::@1 gfx_init_screen2::@2 gfx_init_screen2::@1 gfx_init_screen2::@3 main gfx_init -gfx_init_screen2::@return dominated by gfx_init_screen2 gfx_init_screen2::@return @begin @59 main::@7 gfx_init::@2 gfx_init::@1 gfx_init_screen2::@2 gfx_init_screen2::@1 gfx_init_screen2::@3 main gfx_init -gfx_init_screen1 dominated by gfx_init_screen1 @begin @59 main::@7 gfx_init::@1 main gfx_init -gfx_init_screen1::@1 dominated by gfx_init_screen1 @begin gfx_init_screen1::@1 @59 main::@7 gfx_init::@1 main gfx_init -gfx_init_screen1::@2 dominated by gfx_init_screen1 @begin gfx_init_screen1::@1 gfx_init_screen1::@2 @59 main::@7 gfx_init::@1 main gfx_init -gfx_init_screen1::@3 dominated by gfx_init_screen1 @begin gfx_init_screen1::@1 gfx_init_screen1::@3 gfx_init_screen1::@2 @59 main::@7 gfx_init::@1 main gfx_init -gfx_init_screen1::@return dominated by gfx_init_screen1::@return gfx_init_screen1 @begin gfx_init_screen1::@1 gfx_init_screen1::@3 gfx_init_screen1::@2 @59 main::@7 gfx_init::@1 main gfx_init -gfx_init_screen0 dominated by gfx_init_screen0 @begin @59 main::@7 main gfx_init -gfx_init_screen0::@1 dominated by gfx_init_screen0::@1 gfx_init_screen0 @begin @59 main::@7 main gfx_init -gfx_init_screen0::@2 dominated by gfx_init_screen0::@2 gfx_init_screen0::@1 gfx_init_screen0 @begin @59 main::@7 main gfx_init -gfx_init_screen0::@3 dominated by gfx_init_screen0::@3 gfx_init_screen0::@2 gfx_init_screen0::@1 gfx_init_screen0 @begin @59 main::@7 main gfx_init -gfx_init_screen0::@return dominated by gfx_init_screen0::@3 gfx_init_screen0::@2 gfx_init_screen0::@1 gfx_init_screen0 @begin @59 main::@7 main gfx_init gfx_init_screen0::@return -keyboard_init dominated by @begin keyboard_init @59 main -keyboard_init::@return dominated by @begin keyboard_init keyboard_init::@return @59 main +@62 dominated by @begin @62 +@end dominated by @end @begin @62 +main dominated by @begin @62 main +main::@7 dominated by @begin @62 main::@7 main +main::@1 dominated by @begin @62 main::@7 main::@1 main +main::@2 dominated by @begin @62 main::@7 main::@1 main::@2 main +main::@9 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 main +gfx_mode dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode main +gfx_mode::@23 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@23 main +gfx_mode::@1 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@1 main +gfx_mode::@24 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@1 gfx_mode::@24 main +gfx_mode::@2 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@2 gfx_mode::@1 main +gfx_mode::@25 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@2 gfx_mode::@1 gfx_mode::@25 main +gfx_mode::@3 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@3 gfx_mode::@2 gfx_mode::@1 main +gfx_mode::@26 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@3 gfx_mode::@2 gfx_mode::@1 gfx_mode::@26 main +gfx_mode::@4 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@2 gfx_mode::@1 main +gfx_mode::@27 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@2 gfx_mode::@1 gfx_mode::@27 main +gfx_mode::@5 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main +gfx_mode::@28 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 gfx_mode::@28 main +gfx_mode::@6 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main +gfx_mode::@29 dominated by @begin @62 main::@9 main::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 gfx_mode::@29 main +gfx_mode::@7 dominated by @begin @62 main::@9 main::@7 gfx_mode::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main +gfx_mode::@30 dominated by @begin @62 main::@9 main::@7 gfx_mode::@7 main::@1 main::@2 gfx_mode::@30 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main +gfx_mode::@8 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main +gfx_mode::@31 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 main::@1 main::@2 gfx_mode::@31 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main +gfx_mode::@9 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main +gfx_mode::@46 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main +gfx_mode::@47 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main +gfx_mode::@48 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main +gfx_mode::@49 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main +gfx_mode::@50 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main gfx_mode::@50 +gfx_mode::@10 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@10 main gfx_mode::@50 +gfx_mode::@11 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@11 gfx_mode::@10 main gfx_mode::@50 +gfx_mode::@32 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@11 gfx_mode::@10 main gfx_mode::@50 +gfx_mode::@33 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@11 gfx_mode::@10 main gfx_mode::@50 +gfx_mode::@13 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@13 gfx_mode::@11 gfx_mode::@10 main gfx_mode::@50 +gfx_mode::@19 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@19 gfx_mode::@11 gfx_mode::@10 main gfx_mode::@50 +gfx_mode::@21 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@19 gfx_mode::@11 gfx_mode::@10 gfx_mode::@21 main gfx_mode::@50 +gfx_mode::@51 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@19 gfx_mode::@11 gfx_mode::@10 gfx_mode::@21 main gfx_mode::@51 gfx_mode::@50 +gfx_mode::@52 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@19 gfx_mode::@11 gfx_mode::@10 gfx_mode::@21 main gfx_mode::@52 gfx_mode::@51 gfx_mode::@50 +gfx_mode::@return dominated by gfx_mode::@return @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@19 gfx_mode::@11 gfx_mode::@10 gfx_mode::@21 main gfx_mode::@52 gfx_mode::@51 gfx_mode::@50 +gfx_mode::@15 dominated by @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 gfx_mode::@33 main::@2 gfx_mode::@32 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@49 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 gfx_mode::@15 gfx_mode::@11 gfx_mode::@10 main gfx_mode::@50 +keyboard_event_get dominated by @begin @62 main::@7 main::@1 main::@2 main keyboard_event_get +keyboard_event_get::@3 dominated by keyboard_event_get::@3 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_get +keyboard_event_get::@return dominated by keyboard_event_get::@return @begin @62 main::@7 main::@1 main::@2 main keyboard_event_get +keyboard_event_scan dominated by keyboard_event_scan @begin @62 main::@7 main::@1 main::@2 main +keyboard_event_scan::@1 dominated by keyboard_event_scan keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main +keyboard_event_scan::@25 dominated by keyboard_event_scan keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 +keyboard_event_scan::@13 dominated by keyboard_event_scan keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@13 +keyboard_event_scan::@3 dominated by keyboard_event_scan keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 +keyboard_event_scan::@20 dominated by keyboard_event_scan keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@20 +keyboard_event_scan::@26 dominated by keyboard_event_scan keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@26 keyboard_event_scan::@20 +keyboard_event_scan::@21 dominated by keyboard_event_scan keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@26 keyboard_event_scan::@21 keyboard_event_scan::@20 +keyboard_event_scan::@9 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@26 keyboard_event_scan::@20 +keyboard_event_scan::@27 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 +keyboard_event_scan::@22 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@22 +keyboard_event_scan::@10 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@10 +keyboard_event_scan::@28 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@10 +keyboard_event_scan::@23 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@23 keyboard_event_scan::@10 +keyboard_event_scan::@11 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@10 keyboard_event_scan::@11 +keyboard_event_scan::@29 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@29 keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@10 keyboard_event_scan::@11 +keyboard_event_scan::@24 dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@29 keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@24 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@10 keyboard_event_scan::@11 +keyboard_event_scan::@return dominated by keyboard_event_scan keyboard_event_scan::@9 keyboard_event_scan::@3 keyboard_event_scan::@1 keyboard_event_scan::@return @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@29 keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@10 keyboard_event_scan::@11 +keyboard_event_scan::@4 dominated by keyboard_event_scan keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 +keyboard_event_scan::@15 dominated by keyboard_event_scan keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@15 +keyboard_event_scan::@16 dominated by keyboard_event_scan keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@16 keyboard_event_scan::@15 +keyboard_event_scan::@17 dominated by keyboard_event_scan keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@17 keyboard_event_scan::@16 keyboard_event_scan::@15 +keyboard_event_scan::@5 dominated by keyboard_event_scan keyboard_event_scan::@5 keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 +keyboard_event_scan::@19 dominated by keyboard_event_scan keyboard_event_scan::@5 keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@19 +keyboard_event_scan::@7 dominated by keyboard_event_scan keyboard_event_scan::@7 keyboard_event_scan::@4 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_scan::@25 keyboard_event_scan::@16 keyboard_event_scan::@15 +keyboard_event_pressed dominated by keyboard_event_scan keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_event_pressed keyboard_event_scan::@25 keyboard_event_scan::@20 +keyboard_event_pressed::@return dominated by keyboard_event_scan keyboard_event_scan::@3 keyboard_event_scan::@1 @begin @62 main::@7 keyboard_event_pressed::@return main::@1 main::@2 main keyboard_event_pressed keyboard_event_scan::@25 keyboard_event_scan::@20 +keyboard_matrix_read dominated by keyboard_event_scan keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_matrix_read +keyboard_matrix_read::@return dominated by keyboard_event_scan keyboard_event_scan::@1 @begin @62 main::@7 main::@1 main::@2 main keyboard_matrix_read keyboard_matrix_read::@return +get_vic_screen dominated by @begin get_vic_screen @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main +get_vic_screen::@10 dominated by @begin get_vic_screen get_vic_screen::@10 @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main +get_vic_screen::@11 dominated by @begin get_vic_screen get_vic_screen::@10 get_vic_screen::@11 @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main +get_vic_screen::@12 dominated by @begin get_vic_screen get_vic_screen::@10 get_vic_screen::@11 get_vic_screen::@12 @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main +get_vic_screen::@13 dominated by @begin get_vic_screen get_vic_screen::@10 get_vic_screen::@13 get_vic_screen::@11 get_vic_screen::@12 @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main +get_vic_screen::@return dominated by get_vic_screen::@return @begin get_vic_screen @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main +get_vic_screen::@9 dominated by @begin get_vic_screen get_vic_screen::@10 get_vic_screen::@13 get_vic_screen::@11 get_vic_screen::@12 get_vic_screen::@9 @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main +get_vic_charset dominated by get_vic_charset @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main +get_vic_charset::@4 dominated by get_vic_charset @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 get_vic_charset::@4 main +get_vic_charset::@return dominated by get_vic_charset @begin get_vic_charset::@return @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 main +get_vic_charset::@3 dominated by get_vic_charset @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@48 gfx_mode::@47 gfx_mode::@2 gfx_mode::@46 gfx_mode::@1 get_vic_charset::@3 get_vic_charset::@4 main +get_plane dominated by get_plane @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main +get_plane::@28 dominated by get_plane @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 +get_plane::@29 dominated by get_plane @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 +get_plane::@30 dominated by get_plane get_plane::@30 @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 +get_plane::@31 dominated by get_plane get_plane::@30 get_plane::@31 @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 +get_plane::@32 dominated by get_plane get_plane::@30 get_plane::@31 get_plane::@32 @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 +get_plane::@33 dominated by get_plane get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 +get_plane::@34 dominated by get_plane get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 +get_plane::@35 dominated by get_plane get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 +get_plane::@36 dominated by get_plane get_plane::@36 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 +get_plane::@37 dominated by get_plane get_plane::@36 get_plane::@37 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 +get_plane::@38 dominated by get_plane get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 +get_plane::@39 dominated by get_plane get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@39 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 +get_plane::@40 dominated by get_plane get_plane::@40 get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@39 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@28 get_plane::@29 +get_plane::@return dominated by get_plane @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode get_plane::@return gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main +get_plane::@27 dominated by get_plane get_plane::@40 get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@39 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 @begin @62 main::@9 main::@7 gfx_mode::@8 gfx_mode::@7 gfx_mode::@9 main::@1 main::@2 gfx_mode gfx_mode::@4 gfx_mode::@3 gfx_mode::@6 gfx_mode::@5 gfx_mode::@2 gfx_mode::@1 main get_plane::@27 get_plane::@28 get_plane::@29 +form_mode dominated by @begin @62 main::@7 main::@1 main::@2 main form_mode +form_mode::@21 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@21 main form_mode +form_mode::@22 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@21 form_mode::@22 main form_mode +form_mode::@23 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode +form_mode::@24 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@24 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode +form_mode::@25 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode +form_mode::@26 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode +form_mode::@27 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode +form_mode::@28 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode +form_mode::@29 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode +form_mode::@1 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode +form_mode::@10 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@10 form_mode +form_mode::@2 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@10 form_mode +form_mode::@5 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@10 form_mode +form_mode::@7 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode +form_mode::@30 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode +form_mode::@return dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@return form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode +form_mode::@8 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode +form_mode::@18 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +form_mode::@31 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@31 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +form_mode::@32 dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@32 form_mode::@31 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +render_preset_name dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode +render_preset_name::@23 dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode render_preset_name::@23 +render_preset_name::@24 dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode render_preset_name::@23 +render_preset_name::@25 dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode render_preset_name::@23 +render_preset_name::@26 dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 main form_mode::@28 form_mode render_preset_name::@23 +render_preset_name::@27 dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 form_mode render_preset_name::@23 +render_preset_name::@28 dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 render_preset_name::@28 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 form_mode render_preset_name::@23 +render_preset_name::@29 dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 render_preset_name::@28 form_mode::@24 render_preset_name::@29 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 form_mode render_preset_name::@23 +render_preset_name::@30 dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 render_preset_name::@28 form_mode::@24 render_preset_name::@29 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 render_preset_name::@30 form_mode render_preset_name::@23 +render_preset_name::@31 dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 render_preset_name::@28 form_mode::@24 render_preset_name::@29 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 render_preset_name::@31 render_preset_name::@30 form_mode render_preset_name::@23 +render_preset_name::@32 dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 render_preset_name::@28 form_mode::@24 render_preset_name::@29 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 render_preset_name::@31 render_preset_name::@32 render_preset_name::@30 form_mode render_preset_name::@23 +render_preset_name::@33 dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 render_preset_name::@28 form_mode::@24 render_preset_name::@29 form_mode::@27 form_mode::@26 form_mode::@21 render_preset_name::@24 render_preset_name::@25 form_mode::@23 render_preset_name::@26 form_mode::@22 render_preset_name::@27 main form_mode::@28 render_preset_name::@31 render_preset_name::@32 render_preset_name::@33 render_preset_name::@30 form_mode render_preset_name::@23 +render_preset_name::@22 dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode render_preset_name::@22 +render_preset_name::@return dominated by render_preset_name render_preset_name::@return @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 form_mode render_preset_name::@22 +print_str_at dominated by render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 print_str_at form_mode render_preset_name::@22 +print_str_at::@1 dominated by print_str_at::@1 render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 print_str_at form_mode render_preset_name::@22 +print_str_at::@return dominated by print_str_at::@1 render_preset_name @begin print_str_at::@return @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 print_str_at form_mode render_preset_name::@22 +print_str_at::@2 dominated by print_str_at::@1 print_str_at::@2 render_preset_name @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@28 print_str_at form_mode render_preset_name::@22 +form_render_values dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_render_values form_mode +form_render_values::@1 dominated by form_render_values::@1 @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_render_values form_mode +form_render_values::@3 dominated by form_render_values::@3 form_render_values::@1 @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_render_values form_mode +form_render_values::@return dominated by form_render_values::@3 form_render_values::@1 @begin @62 main::@7 main::@1 main::@2 form_render_values::@return form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_render_values form_mode +form_field_ptr dominated by form_field_ptr @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode +form_field_ptr::@return dominated by form_field_ptr @begin @62 main::@7 main::@1 form_field_ptr::@return main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode +apply_preset dominated by @begin @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@24 dominated by @begin apply_preset::@24 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@25 dominated by @begin apply_preset::@25 apply_preset::@24 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@26 dominated by @begin apply_preset::@26 apply_preset::@25 apply_preset::@24 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@27 dominated by @begin apply_preset::@27 apply_preset::@26 apply_preset::@25 apply_preset::@24 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@28 dominated by @begin apply_preset::@27 apply_preset::@26 apply_preset::@28 apply_preset::@25 apply_preset::@24 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@29 dominated by @begin apply_preset::@27 apply_preset::@26 apply_preset::@29 apply_preset::@28 apply_preset::@25 apply_preset::@24 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@30 dominated by apply_preset::@30 @begin apply_preset::@27 apply_preset::@26 apply_preset::@29 apply_preset::@28 apply_preset::@25 apply_preset::@24 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@31 dominated by apply_preset::@30 apply_preset::@31 @begin apply_preset::@27 apply_preset::@26 apply_preset::@29 apply_preset::@28 apply_preset::@25 apply_preset::@24 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@32 dominated by apply_preset::@30 apply_preset::@32 apply_preset::@31 @begin apply_preset::@27 apply_preset::@26 apply_preset::@29 apply_preset::@28 apply_preset::@25 apply_preset::@24 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@33 dominated by apply_preset::@33 apply_preset::@30 apply_preset::@32 apply_preset::@31 @begin apply_preset::@27 apply_preset::@26 apply_preset::@29 apply_preset::@28 apply_preset::@25 apply_preset::@24 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@34 dominated by apply_preset::@34 apply_preset::@33 apply_preset::@30 apply_preset::@32 apply_preset::@31 @begin apply_preset::@27 apply_preset::@26 apply_preset::@29 apply_preset::@28 apply_preset::@25 apply_preset::@24 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@22 dominated by @begin apply_preset::@22 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@23 dominated by @begin apply_preset::@23 apply_preset::@22 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +apply_preset::@return dominated by apply_preset::@return @begin apply_preset::@23 apply_preset::@22 @62 apply_preset main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@30 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@8 form_mode::@10 form_mode form_mode::@18 +form_control dominated by @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@33 dominated by @begin @62 main::@7 main::@1 main::@2 form_control::@33 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@1 dominated by form_control::@1 @begin @62 main::@7 main::@1 main::@2 form_control::@33 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@16 dominated by form_control::@1 @begin @62 main::@7 main::@1 main::@2 form_control::@16 form_control::@33 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@3 dominated by form_control::@1 form_control::@3 @begin @62 main::@7 main::@1 main::@2 form_control::@33 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@34 dominated by form_control::@1 form_control::@3 @begin @62 main::@7 main::@1 main::@2 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@35 dominated by form_control::@1 form_control::@3 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@18 dominated by form_control::@1 form_control::@3 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@18 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@19 dominated by form_control::@1 form_control::@3 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@18 form_control::@19 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@7 dominated by form_control::@1 form_control::@3 form_control::@7 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@18 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@return dominated by form_control::@1 form_control::@3 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@return form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@37 dominated by form_control::@1 form_control::@3 @begin @62 main::@7 form_control::@35 form_control::@37 main::@1 main::@2 form_control::@18 form_control::@19 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@5 dominated by form_control::@1 form_control::@5 form_control::@3 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@18 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@38 dominated by form_control::@1 form_control::@5 form_control::@3 @begin @62 main::@7 form_control::@35 form_control::@38 main::@1 main::@2 form_control::@18 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@4 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@24 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@24 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@25 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@24 form_control::@25 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@26 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@24 form_control::@25 form_control::@26 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@12 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@24 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_control::@12 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@10 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@24 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_control::@10 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@28 dominated by form_control::@1 form_control::@4 form_control::@3 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_control::@24 form_control::@28 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_control::@10 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@9 dominated by form_control::@1 form_control::@4 form_control::@3 form_control::@9 @begin @62 main::@7 form_control::@35 main::@1 main::@2 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@39 dominated by form_control::@1 form_control::@4 form_control::@3 form_control::@9 @begin @62 main::@7 form_control::@35 form_control::@39 main::@1 main::@2 form_control::@33 form_control::@34 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@2 dominated by form_control::@1 form_control::@2 @begin @62 main::@7 main::@1 main::@2 form_control::@33 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_control::@36 dominated by @begin @62 main::@7 form_control::@36 main::@1 main::@2 form_control::@33 form_mode::@25 form_mode::@24 form_mode::@27 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode::@29 form_mode::@28 form_mode::@1 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@10 form_mode form_control +form_set_screen dominated by form_set_screen @begin @62 main::@7 main::@1 main::@2 form_mode::@25 form_mode::@24 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode +form_set_screen::@1 dominated by form_set_screen @begin @62 main::@7 main::@1 main::@2 form_set_screen::@1 form_mode::@25 form_mode::@24 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_mode +form_set_screen::@return dominated by form_set_screen @begin @62 main::@7 main::@1 main::@2 form_set_screen::@1 form_mode::@25 form_mode::@24 form_mode::@26 form_mode::@21 form_mode::@23 form_mode::@22 main form_set_screen::@return form_mode +print_str_lines dominated by @begin @62 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode +print_str_lines::@1 dominated by @begin print_str_lines::@1 @62 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode +print_str_lines::@return dominated by @begin print_str_lines::@return print_str_lines::@1 @62 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode +print_str_lines::@4 dominated by @begin print_str_lines::@1 print_str_lines::@4 @62 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode +print_str_lines::@8 dominated by @begin print_str_lines::@1 print_str_lines::@4 print_str_lines::@8 @62 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode +print_str_lines::@5 dominated by @begin print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 @62 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode +print_str_lines::@9 dominated by @begin print_str_lines::@9 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 @62 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode +print_ln dominated by print_ln @begin print_str_lines::@9 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 @62 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode +print_ln::@1 dominated by print_ln print_ln::@1 @begin print_str_lines::@9 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 @62 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode +print_ln::@return dominated by print_ln::@return print_ln print_ln::@1 @begin print_str_lines::@9 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 @62 main::@7 main::@1 main::@2 print_str_lines form_mode::@21 form_mode::@22 main form_mode +print_cls dominated by print_cls @begin @62 main::@7 main::@1 main::@2 form_mode::@21 main form_mode +print_cls::@1 dominated by print_cls @begin print_cls::@1 @62 main::@7 main::@1 main::@2 form_mode::@21 main form_mode +print_cls::@return dominated by print_cls @begin print_cls::@1 @62 main::@7 main::@1 main::@2 form_mode::@21 main print_cls::@return form_mode +print_set_screen dominated by @begin @62 main::@7 main::@1 main::@2 print_set_screen main form_mode +print_set_screen::@return dominated by @begin @62 main::@7 main::@1 main::@2 print_set_screen main form_mode print_set_screen::@return +gfx_init dominated by @begin @62 main::@7 main gfx_init +gfx_init::@1 dominated by @begin @62 main::@7 gfx_init::@1 main gfx_init +gfx_init::@2 dominated by @begin @62 main::@7 gfx_init::@2 gfx_init::@1 main gfx_init +gfx_init::@3 dominated by @begin @62 main::@7 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init::@4 dominated by @begin @62 main::@7 gfx_init::@4 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init::@5 dominated by @begin @62 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init::@6 dominated by @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init::@7 dominated by @begin @62 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init::@8 dominated by @begin @62 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init::@9 dominated by @begin @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init::@10 dominated by @begin gfx_init::@10 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init::@11 dominated by @begin gfx_init::@10 gfx_init::@11 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init::@12 dominated by @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init::@13 dominated by @begin gfx_init::@13 gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init::@14 dominated by @begin gfx_init::@13 gfx_init::@14 gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init::@return dominated by @begin gfx_init::@13 gfx_init::@14 gfx_init::@10 gfx_init::@11 gfx_init::@12 gfx_init::@return @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_full dominated by @begin gfx_init::@13 gfx_init::@14 gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_full main gfx_init +gfx_init_plane_full::@return dominated by @begin gfx_init::@13 gfx_init::@14 gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_full main gfx_init gfx_init_plane_full::@return +gfx_init_plane_fill dominated by gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_fill::@5 dominated by gfx_init_plane_fill::@5 gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_fill::@1 dominated by gfx_init_plane_fill::@1 gfx_init_plane_fill::@5 gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_fill::@2 dominated by gfx_init_plane_fill::@2 gfx_init_plane_fill::@1 gfx_init_plane_fill::@5 gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_fill::@3 dominated by gfx_init_plane_fill::@2 gfx_init_plane_fill::@1 gfx_init_plane_fill::@3 gfx_init_plane_fill::@5 gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_fill::@4 dominated by gfx_init_plane_fill::@2 gfx_init_plane_fill::@1 gfx_init_plane_fill::@4 gfx_init_plane_fill::@3 gfx_init_plane_fill::@5 gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_fill::@return dominated by gfx_init_plane_fill::@2 gfx_init_plane_fill::@1 gfx_init_plane_fill::@4 gfx_init_plane_fill::@3 gfx_init_plane_fill::@5 gfx_init_plane_fill::@return gfx_init_plane_fill @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +dtvSetCpuBankSegment1 dominated by @begin @62 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 dtvSetCpuBankSegment1 main gfx_init +dtvSetCpuBankSegment1::@return dominated by dtvSetCpuBankSegment1::@return @begin @62 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 dtvSetCpuBankSegment1 main gfx_init +gfx_init_plane_blank dominated by gfx_init_plane_blank @begin gfx_init::@13 gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_blank::@return dominated by gfx_init_plane_blank gfx_init_plane_blank::@return @begin gfx_init::@13 gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_vertical2 dominated by gfx_init_plane_vertical2 @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_vertical2::@return dominated by gfx_init_plane_vertical2 @begin gfx_init::@10 gfx_init::@11 gfx_init::@12 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_vertical2::@return main gfx_init +gfx_init_plane_horisontal2 dominated by @begin gfx_init::@10 gfx_init::@11 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_horisontal2 +gfx_init_plane_horisontal2::@1 dominated by @begin gfx_init_plane_horisontal2::@1 gfx_init::@10 gfx_init::@11 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_horisontal2 +gfx_init_plane_horisontal2::@2 dominated by @begin gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@1 gfx_init::@10 gfx_init::@11 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_horisontal2 +gfx_init_plane_horisontal2::@3 dominated by @begin gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@3 gfx_init::@10 gfx_init::@11 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_horisontal2 +gfx_init_plane_horisontal2::@4 dominated by @begin gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal2::@3 gfx_init::@10 gfx_init::@11 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_horisontal2 +gfx_init_plane_horisontal2::@return dominated by @begin gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal2::@3 gfx_init::@10 gfx_init::@11 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal2::@return main gfx_init gfx_init_plane_horisontal2 +gfx_init_plane_vertical dominated by @begin gfx_init::@10 @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_vertical +gfx_init_plane_vertical::@1 dominated by @begin gfx_init::@10 @62 main::@7 gfx_init_plane_vertical::@1 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_vertical +gfx_init_plane_vertical::@2 dominated by @begin gfx_init::@10 @62 main::@7 gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@2 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_vertical +gfx_init_plane_vertical::@3 dominated by @begin gfx_init::@10 @62 main::@7 gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@2 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_vertical +gfx_init_plane_vertical::@4 dominated by @begin gfx_init::@10 @62 main::@7 gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@4 gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@2 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_vertical +gfx_init_plane_vertical::@return dominated by gfx_init_plane_vertical::@return @begin gfx_init::@10 @62 main::@7 gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@4 gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@2 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_plane_vertical +gfx_init_plane_horisontal dominated by @begin @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal main gfx_init +gfx_init_plane_horisontal::@1 dominated by @begin @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal main gfx_init +gfx_init_plane_horisontal::@2 dominated by @begin @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal main gfx_init +gfx_init_plane_horisontal::@5 dominated by @begin @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@5 gfx_init_plane_horisontal main gfx_init +gfx_init_plane_horisontal::@4 dominated by @begin @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal main gfx_init +gfx_init_plane_horisontal::@7 dominated by @begin @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal main gfx_init +gfx_init_plane_horisontal::@8 dominated by @begin @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal::@8 gfx_init_plane_horisontal main gfx_init +gfx_init_plane_horisontal::@return dominated by gfx_init_plane_horisontal::@return @begin @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal::@8 gfx_init_plane_horisontal main gfx_init +gfx_init_plane_horisontal::@3 dominated by @begin @62 main::@7 gfx_init::@8 gfx_init::@9 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init_plane_horisontal::@3 gfx_init::@1 gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal main gfx_init +gfx_init_plane_charset8 dominated by gfx_init_plane_charset8 @begin @62 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_charset8::@9 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 @62 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_charset8::@1 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 @62 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_charset8::@2 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 @62 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_charset8::@3 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 @62 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_charset8::@5 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 @62 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_charset8::@4 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 @62 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_charset8::@6 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 @62 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_charset8::@7 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 @62 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_charset8::@8 dominated by gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 @62 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_charset8::@return dominated by gfx_init_plane_charset8::@return gfx_init_plane_charset8 @begin gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 @62 main::@7 gfx_init::@8 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_8bppchunky dominated by @begin gfx_init_plane_8bppchunky @62 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_8bppchunky::@1 dominated by @begin gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky @62 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_8bppchunky::@2 dominated by @begin gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky @62 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_8bppchunky::@4 dominated by @begin gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky @62 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_8bppchunky::@8 dominated by @begin gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@8 gfx_init_plane_8bppchunky @62 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_8bppchunky::@3 dominated by @begin gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky @62 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_8bppchunky::@5 dominated by @begin gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky @62 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_8bppchunky::@6 dominated by @begin gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@6 gfx_init_plane_8bppchunky @62 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_plane_8bppchunky::@return dominated by @begin gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@6 gfx_init_plane_8bppchunky @62 main::@7 gfx_init::@6 gfx_init::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 gfx_init_plane_8bppchunky::@return main gfx_init +gfx_init_vic_bitmap dominated by gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_vic_bitmap::@3 dominated by gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@3 +gfx_init_vic_bitmap::@1 dominated by gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +gfx_init_vic_bitmap::@5 dominated by gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@5 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +gfx_init_vic_bitmap::@return dominated by gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@return gfx_init_vic_bitmap::@5 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line dominated by bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@15 dominated by bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@15 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@16 dominated by bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@16 bitmap_line::@15 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@17 dominated by bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@17 bitmap_line::@16 bitmap_line::@15 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@return dominated by bitmap_line::@return bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@3 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@3 @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@16 bitmap_line::@15 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@2 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@2 @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@15 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@20 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@2 @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@15 bitmap_line::@20 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@6 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@2 bitmap_line::@6 @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@15 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@1 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@23 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@23 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@24 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@24 bitmap_line::@23 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@10 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 @62 main::@7 bitmap_line::@10 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@23 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@9 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 bitmap_line::@9 @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@27 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 bitmap_line::@9 @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line::@27 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line::@13 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line::@1 bitmap_line::@9 @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 bitmap_line::@13 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_xdyi dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyi @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_xdyi::@1 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyi @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_xdyi::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_xdyi::@5 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyi @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_xdyi::@3 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyi @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_xdyi::@2 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyi @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_xdyi::@return dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyi @62 main::@7 bitmap_line_xdyi::@return gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_plot dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_plot @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_plot::@return dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_plot bitmap_plot::@return @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_ydxi dominated by bitmap_line_ydxi bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_ydxi::@1 dominated by bitmap_line_ydxi bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxi::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_ydxi::@5 dominated by bitmap_line_ydxi bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxi::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 bitmap_line_ydxi::@5 +bitmap_line_ydxi::@3 dominated by bitmap_line_ydxi bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxi::@3 bitmap_line_ydxi::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 bitmap_line_ydxi::@5 +bitmap_line_ydxi::@2 dominated by bitmap_line_ydxi bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 bitmap_line_ydxi::@5 +bitmap_line_ydxi::@return dominated by bitmap_line_ydxi bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_ydxi::@return main gfx_init bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 bitmap_line_ydxi::@5 +bitmap_line_xdyd dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyd @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_xdyd::@1 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyd @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_xdyd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_xdyd::@5 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyd @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_xdyd::@5 bitmap_line_xdyd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_xdyd::@3 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyd @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_xdyd::@2 dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyd @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_xdyd::@return dominated by bitmap_line gfx_init_vic_bitmap @begin bitmap_line_xdyd @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_xdyd::@return main gfx_init bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_ydxd dominated by bitmap_line_ydxd bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_ydxd::@1 dominated by bitmap_line_ydxd bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_ydxd::@5 dominated by bitmap_line_ydxd bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxd::@5 bitmap_line_ydxd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_ydxd::@3 dominated by bitmap_line_ydxd bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 bitmap_line_ydxd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_ydxd::@2 dominated by bitmap_line_ydxd bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 bitmap_line_ydxd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_line_ydxd::@return dominated by bitmap_line_ydxd bitmap_line gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_line_ydxd::@return main gfx_init bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 bitmap_line_ydxd::@1 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@3 +bitmap_clear dominated by bitmap_clear gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_vic_bitmap::@3 +bitmap_clear::@1 dominated by bitmap_clear gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_clear::@1 main gfx_init gfx_init_vic_bitmap::@3 +bitmap_clear::@2 dominated by bitmap_clear gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_clear::@1 bitmap_clear::@2 main gfx_init gfx_init_vic_bitmap::@3 +bitmap_clear::@3 dominated by bitmap_clear gfx_init_vic_bitmap @begin @62 bitmap_clear::@3 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_clear::@1 bitmap_clear::@2 main gfx_init gfx_init_vic_bitmap::@3 +bitmap_clear::@return dominated by bitmap_clear gfx_init_vic_bitmap @begin @62 bitmap_clear::@3 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@return main gfx_init gfx_init_vic_bitmap::@3 +bitmap_init dominated by gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init main gfx_init +bitmap_init::@1 dominated by gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@1 bitmap_init main gfx_init +bitmap_init::@2 dominated by gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@2 bitmap_init::@1 bitmap_init main gfx_init +bitmap_init::@3 dominated by gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init main gfx_init +bitmap_init::@7 dominated by gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@7 bitmap_init main gfx_init +bitmap_init::@4 dominated by gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 bitmap_init main gfx_init +bitmap_init::@return dominated by bitmap_init::@return gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 bitmap_init main gfx_init +bitmap_init::@10 dominated by gfx_init_vic_bitmap @begin @62 main::@7 gfx_init::@6 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 bitmap_init::@1 bitmap_init main gfx_init bitmap_init::@10 +gfx_init_charset dominated by @begin @62 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_charset +gfx_init_charset::@1 dominated by gfx_init_charset::@1 @begin @62 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_charset +gfx_init_charset::@2 dominated by gfx_init_charset::@2 gfx_init_charset::@1 @begin @62 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_charset +gfx_init_charset::@3 dominated by gfx_init_charset::@2 gfx_init_charset::@1 gfx_init_charset::@3 @begin @62 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_charset +gfx_init_charset::@4 dominated by gfx_init_charset::@2 gfx_init_charset::@1 gfx_init_charset::@4 gfx_init_charset::@3 @begin @62 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_charset +gfx_init_charset::@return dominated by gfx_init_charset::@2 gfx_init_charset::@1 gfx_init_charset::@4 gfx_init_charset::@3 @begin gfx_init_charset::@return @62 main::@7 gfx_init::@4 gfx_init::@5 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_charset +gfx_init_screen4 dominated by gfx_init_screen4 @begin @62 main::@7 gfx_init::@4 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_screen4::@1 dominated by gfx_init_screen4 gfx_init_screen4::@1 @begin @62 main::@7 gfx_init::@4 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_screen4::@2 dominated by gfx_init_screen4 gfx_init_screen4::@2 gfx_init_screen4::@1 @begin @62 main::@7 gfx_init::@4 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_screen4::@3 dominated by gfx_init_screen4 gfx_init_screen4::@3 gfx_init_screen4::@2 gfx_init_screen4::@1 @begin @62 main::@7 gfx_init::@4 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_screen4::@return dominated by gfx_init_screen4 gfx_init_screen4::@return gfx_init_screen4::@3 gfx_init_screen4::@2 gfx_init_screen4::@1 @begin @62 main::@7 gfx_init::@4 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_screen3 dominated by gfx_init_screen3 @begin @62 main::@7 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init +gfx_init_screen3::@1 dominated by gfx_init_screen3 @begin @62 main::@7 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_screen3::@1 +gfx_init_screen3::@2 dominated by gfx_init_screen3 @begin @62 main::@7 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_screen3::@2 gfx_init_screen3::@1 +gfx_init_screen3::@3 dominated by gfx_init_screen3 @begin @62 main::@7 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_screen3::@3 gfx_init_screen3::@2 gfx_init_screen3::@1 +gfx_init_screen3::@return dominated by gfx_init_screen3 @begin @62 main::@7 gfx_init::@2 gfx_init::@3 gfx_init::@1 main gfx_init gfx_init_screen3::@return gfx_init_screen3::@3 gfx_init_screen3::@2 gfx_init_screen3::@1 +gfx_init_screen2 dominated by gfx_init_screen2 @begin @62 main::@7 gfx_init::@2 gfx_init::@1 main gfx_init +gfx_init_screen2::@1 dominated by gfx_init_screen2 @begin @62 main::@7 gfx_init::@2 gfx_init::@1 gfx_init_screen2::@1 main gfx_init +gfx_init_screen2::@2 dominated by gfx_init_screen2 @begin @62 main::@7 gfx_init::@2 gfx_init::@1 gfx_init_screen2::@2 gfx_init_screen2::@1 main gfx_init +gfx_init_screen2::@3 dominated by gfx_init_screen2 @begin @62 main::@7 gfx_init::@2 gfx_init::@1 gfx_init_screen2::@2 gfx_init_screen2::@1 gfx_init_screen2::@3 main gfx_init +gfx_init_screen2::@return dominated by gfx_init_screen2 gfx_init_screen2::@return @begin @62 main::@7 gfx_init::@2 gfx_init::@1 gfx_init_screen2::@2 gfx_init_screen2::@1 gfx_init_screen2::@3 main gfx_init +gfx_init_screen1 dominated by gfx_init_screen1 @begin @62 main::@7 gfx_init::@1 main gfx_init +gfx_init_screen1::@1 dominated by gfx_init_screen1 @begin gfx_init_screen1::@1 @62 main::@7 gfx_init::@1 main gfx_init +gfx_init_screen1::@2 dominated by gfx_init_screen1 @begin gfx_init_screen1::@1 gfx_init_screen1::@2 @62 main::@7 gfx_init::@1 main gfx_init +gfx_init_screen1::@3 dominated by gfx_init_screen1 @begin gfx_init_screen1::@1 gfx_init_screen1::@3 gfx_init_screen1::@2 @62 main::@7 gfx_init::@1 main gfx_init +gfx_init_screen1::@return dominated by gfx_init_screen1::@return gfx_init_screen1 @begin gfx_init_screen1::@1 gfx_init_screen1::@3 gfx_init_screen1::@2 @62 main::@7 gfx_init::@1 main gfx_init +gfx_init_screen0 dominated by gfx_init_screen0 @begin @62 main::@7 main gfx_init +gfx_init_screen0::@1 dominated by gfx_init_screen0::@1 gfx_init_screen0 @begin @62 main::@7 main gfx_init +gfx_init_screen0::@2 dominated by gfx_init_screen0::@2 gfx_init_screen0::@1 gfx_init_screen0 @begin @62 main::@7 main gfx_init +gfx_init_screen0::@3 dominated by gfx_init_screen0::@3 gfx_init_screen0::@2 gfx_init_screen0::@1 gfx_init_screen0 @begin @62 main::@7 main gfx_init +gfx_init_screen0::@return dominated by gfx_init_screen0::@3 gfx_init_screen0::@2 gfx_init_screen0::@1 gfx_init_screen0 @begin @62 main::@7 main gfx_init gfx_init_screen0::@return +keyboard_init dominated by @begin keyboard_init @62 main +keyboard_init::@return dominated by @begin keyboard_init keyboard_init::@return @62 main NATURAL LOOPS Found back edge: Loop head: main::@1 tails: main::@9 blocks: null @@ -23040,15 +23144,15 @@ INITIAL ASM .label form_field_idx = $20 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @59 [phi:@begin->@59] -b59_from_bbegin: - jmp b59 -//SEG4 @59 -b59: +//SEG3 [1] phi from @begin to @62 [phi:@begin->@62] +b62_from_bbegin: + jmp b62 +//SEG4 @62 +b62: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @59 to @end [phi:@59->@end] -bend_from_b59: +//SEG6 [3] phi from @62 to @end [phi:@62->@end] +bend_from_b62: jmp bend //SEG7 @end bend: @@ -30070,15 +30174,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label form_cursor_count = $e //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @59 [phi:@begin->@59] -b59_from_bbegin: - jmp b59 -//SEG4 @59 -b59: +//SEG3 [1] phi from @begin to @62 [phi:@begin->@62] +b62_from_bbegin: + jmp b62 +//SEG4 @62 +b62: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @59 to @end [phi:@59->@end] -bend_from_b59: +//SEG6 [3] phi from @62 to @end [phi:@62->@end] +bend_from_b62: jmp bend //SEG7 @end bend: @@ -35071,7 +35175,7 @@ keyboard_init: { FORM_COLS: .text "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm @"+" nnnnnnnnnnnn jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+"@" ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b59 +Removing instruction jmp b62 Removing instruction jmp bend Removing instruction jmp b7 Removing instruction jmp b1 @@ -35496,8 +35600,8 @@ Replacing label b1_from_b3 with b1 Replacing label b2_from_b2 with b2 Replacing label b1_from_b3 with b1 Removing instruction bbegin: -Removing instruction b59_from_bbegin: -Removing instruction bend_from_b59: +Removing instruction b62_from_bbegin: +Removing instruction bend_from_b62: Removing instruction b7_from_main: Removing instruction gfx_init_from_b7: Removing instruction b1: @@ -35712,7 +35816,7 @@ Removing instruction b1_from_b3: Removing instruction b2_from_b1: Removing instruction b2_from_b2: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b59: +Removing instruction b62: Removing instruction bend: Removing instruction b7: Removing instruction b1_from_b7: @@ -36142,7 +36246,7 @@ Fixing long branch [722] beq b13 to bne Fixing long branch [1246] bmi b2 to bpl FINAL SYMBOL TABLE -(label) @59 +(label) @62 (label) @begin (label) @end (byte*) BGCOL @@ -37804,11 +37908,11 @@ Score: 11369461 .label keyboard_modifiers = 2 .label form_cursor_count = $e //SEG2 @begin -//SEG3 [1] phi from @begin to @59 [phi:@begin->@59] -//SEG4 @59 +//SEG3 [1] phi from @begin to @62 [phi:@begin->@62] +//SEG4 @62 //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @59 to @end [phi:@59->@end] +//SEG6 [3] phi from @62 to @end [phi:@62->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.sym b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.sym index 339affeb9..7b20ed986 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.sym @@ -1,4 +1,4 @@ -(label) @59 +(label) @62 (label) @begin (label) @end (byte*) BGCOL diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.cfg b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.cfg index 18e597186..cfeec302c 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@45 -@45: scope:[] from @begin + to:@48 +@48: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @45 +@end: scope:[] from @48 [3] phi() [ ] ( ) -main: scope:[main] from @45 +main: scope:[main] from @48 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.log b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.log index 5f5bbec6a..e88dc8da8 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.log @@ -1159,6 +1159,24 @@ const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + Importing print.kc PARSING src/test/java/dk/camelot64/kickc/test/kc/print.kc @@ -1776,6 +1794,9 @@ SYMBOLS (label) @43 (label) @44 (label) @45 +(label) @46 +(label) @47 +(label) @48 (label) @5 (label) @6 (label) @7 @@ -3284,6 +3305,34 @@ SYMBOLS (void~) print_word::$3 (label) print_word::@return (word) print_word::w +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 @@ -3478,6 +3527,51 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 (byte*) DTV_FEATURE ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) DTV_FEATURE_DISABLE_TIL_RESET ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -3509,7 +3603,7 @@ INITIAL CONTROL FLOW GRAPH (dword) DTV_COLOR_BANK_DEFAULT ← (dword/signed dword) 120832 (byte*) DTV_GRAPHICS_VIC_BANK ← ((byte*)) (word/dword/signed dword) 53309 (byte*) DTV_GRAPHICS_HICOL_BANK ← ((byte*)) (word/dword/signed dword) 53310 - to:@1 + to:@4 dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from (byte*) dtvSetCpuBankSegment1::cpuBank ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 *((byte*) dtvSetCpuBankSegment1::cpuBank) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx @@ -3518,7 +3612,7 @@ dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 return to:@return -@1: scope:[] from @begin +@4: scope:[] from @3 (byte*) DTV_BLITTER_SRCA_LO ← ((byte*)) (word/dword/signed dword) 54048 (byte*) DTV_BLITTER_SRCA_MI ← ((byte*)) (word/dword/signed dword) 54049 (byte*) DTV_BLITTER_SRCA_HI ← ((byte*)) (word/dword/signed dword) 54050 @@ -3586,7 +3680,7 @@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBan (byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_line_cursor ← (byte*) print_screen (byte*) print_char_cursor ← (byte*) print_line_cursor - to:@2 + to:@5 print_str_lines: scope:[print_str_lines] from to:print_str_lines::@1 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9 @@ -3624,8 +3718,8 @@ print_str_lines::@10: scope:[print_str_lines] from print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@3 return to:@return -@2: scope:[] from @1 - to:@3 +@5: scope:[] from @4 + to:@6 print_str_ln: scope:[print_str_ln] from (void~) print_str_ln::$0 ← call print_str (byte*) print_str_ln::str (void~) print_str_ln::$1 ← call print_ln @@ -3633,8 +3727,8 @@ print_str_ln: scope:[print_str_ln] from print_str_ln::@return: scope:[print_str_ln] from print_str_ln return to:@return -@3: scope:[] from @2 - to:@4 +@6: scope:[] from @5 + to:@7 print_str: scope:[print_str] from to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 @@ -3657,8 +3751,8 @@ print_str::@6: scope:[print_str] from print_str::@return: scope:[print_str] from print_str::@3 return to:@return -@4: scope:[] from @3 - to:@5 +@7: scope:[] from @6 + to:@8 print_str_at: scope:[print_str_at] from to:print_str_at::@1 print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2 @@ -3681,8 +3775,8 @@ print_str_at::@6: scope:[print_str_at] from print_str_at::@return: scope:[print_str_at] from print_str_at::@3 return to:@return -@5: scope:[] from @4 - to:@6 +@8: scope:[] from @7 + to:@9 print_ln: scope:[print_ln] from to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 @@ -3697,8 +3791,8 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 print_ln::@return: scope:[print_ln] from print_ln::@2 return to:@return -@6: scope:[] from @5 - to:@7 +@9: scope:[] from @8 + to:@10 print_sword: scope:[print_sword] from (bool~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 @@ -3716,8 +3810,8 @@ print_sword::@2: scope:[print_sword] from print_sword print_sword::@return: scope:[print_sword] from print_sword::@1 return to:@return -@7: scope:[] from @6 - to:@8 +@10: scope:[] from @9 + to:@11 print_sbyte: scope:[print_sbyte] from (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sbyte::$1 ← ! (bool~) print_sbyte::$0 @@ -3735,8 +3829,8 @@ print_sbyte::@2: scope:[print_sbyte] from print_sbyte print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 return to:@return -@8: scope:[] from @7 - to:@9 +@11: scope:[] from @10 + to:@12 print_word: scope:[print_word] from (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -3746,8 +3840,8 @@ print_word: scope:[print_word] from print_word::@return: scope:[print_word] from print_word return to:@return -@9: scope:[] from @8 - to:@10 +@12: scope:[] from @11 + to:@13 print_dword: scope:[print_dword] from (word~) print_dword::$0 ← > (dword) print_dword::dw (void~) print_dword::$1 ← call print_word (word~) print_dword::$0 @@ -3757,8 +3851,8 @@ print_dword: scope:[print_dword] from print_dword::@return: scope:[print_dword] from print_dword return to:@return -@10: scope:[] from @9 - to:@11 +@13: scope:[] from @12 + to:@14 print_sdword: scope:[print_sdword] from (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0 @@ -3776,9 +3870,9 @@ print_sdword::@2: scope:[print_sdword] from print_sdword print_sdword::@return: scope:[print_sdword] from print_sdword::@1 return to:@return -@11: scope:[] from @10 +@14: scope:[] from @13 (byte[]) print_hextab ← (string) "0123456789abcdef" - to:@12 + to:@15 print_byte: scope:[print_byte] from (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_hextab + (byte~) print_byte::$0) @@ -3788,8 +3882,8 @@ print_byte: scope:[print_byte] from print_byte::@return: scope:[print_byte] from print_byte return to:@return -@12: scope:[] from @11 - to:@13 +@15: scope:[] from @14 + to:@16 print_char: scope:[print_char] from *((byte*) print_char_cursor) ← (byte) print_char::ch (byte*) print_char_cursor ← ++ (byte*) print_char_cursor @@ -3797,8 +3891,8 @@ print_char: scope:[print_char] from print_char::@return: scope:[print_char] from print_char return to:@return -@13: scope:[] from @12 - to:@14 +@16: scope:[] from @15 + to:@17 print_cls: scope:[print_cls] from (byte*) print_cls::sc ← (byte*) print_screen to:print_cls::@1 @@ -3816,8 +3910,8 @@ print_cls::@2: scope:[print_cls] from print_cls::@1 print_cls::@return: scope:[print_cls] from print_cls::@2 return to:@return -@14: scope:[] from @13 - to:@15 +@17: scope:[] from @16 + to:@18 print_set_screen: scope:[print_set_screen] from (byte*) print_screen ← (byte*) print_set_screen::screen (byte*) print_line_cursor ← (byte*) print_screen @@ -3826,7 +3920,7 @@ print_set_screen: scope:[print_set_screen] from print_set_screen::@return: scope:[print_set_screen] from print_set_screen return to:@return -@15: scope:[] from @14 +@18: scope:[] from @17 (byte) KEY_DEL ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) KEY_RETURN ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) KEY_CRSR_RIGHT ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -3894,7 +3988,7 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen (byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@16 + to:@19 keyboard_init: scope:[keyboard_init] from *((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255 *((byte*) CIA1_PORT_B_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -3902,8 +3996,8 @@ keyboard_init: scope:[keyboard_init] from keyboard_init::@return: scope:[keyboard_init] from keyboard_init return to:@return -@16: scope:[] from @15 - to:@17 +@19: scope:[] from @18 + to:@20 keyboard_matrix_read: scope:[keyboard_matrix_read] from *((byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 ← ~ *((byte*) CIA1_PORT_B) @@ -3916,8 +4010,8 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri to:@return keyboard_matrix_read::@1: scope:[keyboard_matrix_read] from to:keyboard_matrix_read::@return -@17: scope:[] from @16 - to:@18 +@20: scope:[] from @19 + to:@21 keyboard_key_pressed: scope:[keyboard_key_pressed] from (byte~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key & (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) keyboard_key_pressed::colidx ← (byte~) keyboard_key_pressed::$0 @@ -3933,8 +4027,8 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p to:@return keyboard_key_pressed::@1: scope:[keyboard_key_pressed] from to:keyboard_key_pressed::@return -@18: scope:[] from @17 - to:@19 +@21: scope:[] from @20 + to:@22 keyboard_get_keycode: scope:[keyboard_get_keycode] from (byte) keyboard_get_keycode::return ← *((byte[]) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch) to:keyboard_get_keycode::@return @@ -3944,7 +4038,7 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k to:@return keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from to:keyboard_get_keycode::@return -@19: scope:[] from @18 +@22: scope:[] from @21 (byte[8]) keyboard_events ← { fill( 8, 0) } (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -3955,7 +4049,7 @@ keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT (byte) KEY_MODIFIER_SHIFT ← (byte~) $0 (byte[8]) keyboard_scan_values ← { fill( 8, 0) } - to:@20 + to:@23 keyboard_event_scan: scope:[keyboard_event_scan] from (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -4068,8 +4162,8 @@ keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan: keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@12 return to:@return -@20: scope:[] from @19 - to:@21 +@23: scope:[] from @22 + to:@24 keyboard_event_pressed: scope:[keyboard_event_pressed] from (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3 (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0) @@ -4083,8 +4177,8 @@ keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_e to:@return keyboard_event_pressed::@1: scope:[keyboard_event_pressed] from to:keyboard_event_pressed::@return -@21: scope:[] from @20 - to:@22 +@24: scope:[] from @23 + to:@25 keyboard_event_get: scope:[keyboard_event_get] from (bool~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) keyboard_event_get::$0) goto keyboard_event_get::@1 @@ -4108,13 +4202,13 @@ keyboard_event_get::@5: scope:[keyboard_event_get] from to:keyboard_event_get::@1 keyboard_event_get::@6: scope:[keyboard_event_get] from to:keyboard_event_get::@2 -@22: scope:[] from @21 +@25: scope:[] from @24 (byte[256]) bitmap_plot_xlo ← { fill( 256, 0) } (byte[256]) bitmap_plot_xhi ← { fill( 256, 0) } (byte[256]) bitmap_plot_ylo ← { fill( 256, 0) } (byte[256]) bitmap_plot_yhi ← { fill( 256, 0) } (byte[256]) bitmap_plot_bit ← { fill( 256, 0) } - to:@23 + to:@26 bitmap_init: scope:[bitmap_init] from (byte) bitmap_init::bits ← (byte/word/signed word/dword/signed dword) 128 (byte) bitmap_init::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -4170,8 +4264,8 @@ bitmap_init::@8: scope:[bitmap_init] from bitmap_init::@4 bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@8 return to:@return -@23: scope:[] from @22 - to:@24 +@26: scope:[] from @25 + to:@27 bitmap_clear: scope:[bitmap_clear] from (byte*~) bitmap_clear::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_xhi + (byte/signed byte/word/signed word/dword/signed dword) 0), *((byte[256]) bitmap_plot_xlo + (byte/signed byte/word/signed word/dword/signed dword) 0) } (byte*) bitmap_clear::bitmap ← (byte*~) bitmap_clear::$0 @@ -4197,8 +4291,8 @@ bitmap_clear::@4: scope:[bitmap_clear] from bitmap_clear::@3 bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@4 return to:@return -@24: scope:[] from @23 - to:@25 +@27: scope:[] from @26 + to:@28 bitmap_plot: scope:[bitmap_plot] from (word) bitmap_plot::plotter_x ← { *((byte[256]) bitmap_plot_xhi + (byte) bitmap_plot::x), *((byte[256]) bitmap_plot_xlo + (byte) bitmap_plot::x) } (word) bitmap_plot::plotter_y ← { *((byte[256]) bitmap_plot_yhi + (byte) bitmap_plot::y), *((byte[256]) bitmap_plot_ylo + (byte) bitmap_plot::y) } @@ -4210,8 +4304,8 @@ bitmap_plot: scope:[bitmap_plot] from bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot return to:@return -@25: scope:[] from @24 - to:@26 +@28: scope:[] from @27 + to:@29 bitmap_line: scope:[bitmap_line] from (bool~) bitmap_line::$0 ← (byte) bitmap_line::x0 < (byte) bitmap_line::x1 if((bool~) bitmap_line::$0) goto bitmap_line::@1 @@ -4307,8 +4401,8 @@ bitmap_line::@28: scope:[bitmap_line] from bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@8 return to:@return -@26: scope:[] from @25 - to:@27 +@29: scope:[] from @28 + to:@30 bitmap_line_xdyi: scope:[bitmap_line_xdyi] from (byte~) bitmap_line_xdyi::$0 ← (byte) bitmap_line_xdyi::yd >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) bitmap_line_xdyi::e ← (byte~) bitmap_line_xdyi::$0 @@ -4337,8 +4431,8 @@ bitmap_line_xdyi::@4: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@2 bitmap_line_xdyi::@return: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@4 return to:@return -@27: scope:[] from @26 - to:@28 +@30: scope:[] from @29 + to:@31 bitmap_line_xdyd: scope:[bitmap_line_xdyd] from (byte~) bitmap_line_xdyd::$0 ← (byte) bitmap_line_xdyd::yd >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) bitmap_line_xdyd::e ← (byte~) bitmap_line_xdyd::$0 @@ -4367,8 +4461,8 @@ bitmap_line_xdyd::@4: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@2 bitmap_line_xdyd::@return: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@4 return to:@return -@28: scope:[] from @27 - to:@29 +@31: scope:[] from @30 + to:@32 bitmap_line_ydxi: scope:[bitmap_line_ydxi] from (byte~) bitmap_line_ydxi::$0 ← (byte) bitmap_line_ydxi::xd >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) bitmap_line_ydxi::e ← (byte~) bitmap_line_ydxi::$0 @@ -4397,8 +4491,8 @@ bitmap_line_ydxi::@4: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2 bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@4 return to:@return -@29: scope:[] from @28 - to:@30 +@32: scope:[] from @31 + to:@33 bitmap_line_ydxd: scope:[bitmap_line_ydxd] from (byte~) bitmap_line_ydxd::$0 ← (byte) bitmap_line_ydxd::xd >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) bitmap_line_ydxd::e ← (byte~) bitmap_line_ydxd::$0 @@ -4428,8 +4522,8 @@ bitmap_line_ydxd::@4: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@4 return to:@return -@30: scope:[] from @29 - to:@31 +@33: scope:[] from @32 + to:@34 main: scope:[main] from asm { sei } *((byte*) PROCPORT_DDR) ← (byte) PROCPORT_DDR_MEMORY_MASK @@ -4453,7 +4547,7 @@ main::@6: scope:[main] from main::@return: scope:[main] from main::@3 return to:@return -@31: scope:[] from @30 +@34: scope:[] from @33 (string~) $1 ← (string) "C64DTV Graphics Modes CCLHBME@" + (string) " OHIIMCC@" (string~) $2 ← (string~) $1 + (string) " LUNCMMM@" (string~) $3 ← (string~) $2 + (string) "----------------------------------------@" @@ -4475,7 +4569,7 @@ main::@return: scope:[main] from main::@3 (string~) $19 ← (string~) $18 + (string) " (V) vicII (H) vicII+hicol (D) c64dtv@" (string~) $20 ← (string~) $19 + (string) "@" (byte[]) MENU_TEXT ← (string~) $20 - to:@32 + to:@35 menu: scope:[menu] from (byte*) menu::SCREEN ← ((byte*)) (word/dword/signed dword) 32768 (byte*) menu::CHARSET ← ((byte*)) (word/dword/signed dword) 38912 @@ -4684,9 +4778,9 @@ menu::@45: scope:[menu] from to:menu::@17 menu::@46: scope:[menu] from to:menu::@5 -@32: scope:[] from @31 +@35: scope:[] from @34 (byte) dtv_control ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@33 + to:@36 mode_ctrl: scope:[mode_ctrl] from to:mode_ctrl::@1 mode_ctrl::@1: scope:[mode_ctrl] from mode_ctrl mode_ctrl::@15 @@ -4809,8 +4903,8 @@ mode_ctrl::@30: scope:[mode_ctrl] from mode_ctrl::@14 to:mode_ctrl::@15 mode_ctrl::@31: scope:[mode_ctrl] from to:mode_ctrl::@3 -@33: scope:[] from @32 - to:@34 +@36: scope:[] from @35 + to:@37 mode_stdchar: scope:[mode_stdchar] from (byte*) mode_stdchar::SCREEN ← ((byte*)) (word/dword/signed dword) 32768 (byte*) mode_stdchar::CHARSET ← ((byte*)) (word/dword/signed dword) 36864 @@ -4892,8 +4986,8 @@ mode_stdchar::@6: scope:[mode_stdchar] from mode_stdchar::@5 mode_stdchar::@return: scope:[mode_stdchar] from mode_stdchar::@6 return to:@return -@34: scope:[] from @33 - to:@35 +@37: scope:[] from @36 + to:@38 mode_ecmchar: scope:[mode_ecmchar] from (byte*) mode_ecmchar::SCREEN ← ((byte*)) (word/dword/signed dword) 32768 (byte*) mode_ecmchar::CHARSET ← ((byte*)) (word/dword/signed dword) 36864 @@ -4979,8 +5073,8 @@ mode_ecmchar::@6: scope:[mode_ecmchar] from mode_ecmchar::@5 mode_ecmchar::@return: scope:[mode_ecmchar] from mode_ecmchar::@6 return to:@return -@35: scope:[] from @34 - to:@36 +@38: scope:[] from @37 + to:@39 mode_mcchar: scope:[mode_mcchar] from (byte*) mode_mcchar::SCREEN ← ((byte*)) (word/dword/signed dword) 32768 (byte*) mode_mcchar::CHARSET ← ((byte*)) (word/dword/signed dword) 36864 @@ -5065,8 +5159,8 @@ mode_mcchar::@6: scope:[mode_mcchar] from mode_mcchar::@5 mode_mcchar::@return: scope:[mode_mcchar] from mode_mcchar::@6 return to:@return -@36: scope:[] from @35 - to:@37 +@39: scope:[] from @38 + to:@40 mode_stdbitmap: scope:[mode_stdbitmap] from (byte*) mode_stdbitmap::SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 16384 (byte*) mode_stdbitmap::BITMAP ← ((byte*)) (word/signed word/dword/signed dword) 24576 @@ -5154,8 +5248,8 @@ mode_stdbitmap::@8: scope:[mode_stdbitmap] from mode_stdbitmap::@4 mode_stdbitmap::@return: scope:[mode_stdbitmap] from mode_stdbitmap::@8 return to:@return -@37: scope:[] from @36 - to:@38 +@40: scope:[] from @39 + to:@41 mode_hicolstdchar: scope:[mode_hicolstdchar] from (byte*) mode_hicolstdchar::SCREEN ← ((byte*)) (word/dword/signed dword) 32768 (byte*) mode_hicolstdchar::CHARSET ← ((byte*)) (word/dword/signed dword) 36864 @@ -5236,8 +5330,8 @@ mode_hicolstdchar::@6: scope:[mode_hicolstdchar] from mode_hicolstdchar::@5 mode_hicolstdchar::@return: scope:[mode_hicolstdchar] from mode_hicolstdchar::@6 return to:@return -@38: scope:[] from @37 - to:@39 +@41: scope:[] from @40 + to:@42 mode_hicolecmchar: scope:[mode_hicolecmchar] from (byte*) mode_hicolecmchar::SCREEN ← ((byte*)) (word/dword/signed dword) 32768 (byte*) mode_hicolecmchar::CHARSET ← ((byte*)) (word/dword/signed dword) 36864 @@ -5322,8 +5416,8 @@ mode_hicolecmchar::@6: scope:[mode_hicolecmchar] from mode_hicolecmchar::@5 mode_hicolecmchar::@return: scope:[mode_hicolecmchar] from mode_hicolecmchar::@6 return to:@return -@39: scope:[] from @38 - to:@40 +@42: scope:[] from @41 + to:@43 mode_hicolmcchar: scope:[mode_hicolmcchar] from (byte*) mode_hicolmcchar::SCREEN ← ((byte*)) (word/dword/signed dword) 32768 (byte*) mode_hicolmcchar::CHARSET ← ((byte*)) (word/dword/signed dword) 36864 @@ -5407,8 +5501,8 @@ mode_hicolmcchar::@6: scope:[mode_hicolmcchar] from mode_hicolmcchar::@5 mode_hicolmcchar::@return: scope:[mode_hicolmcchar] from mode_hicolmcchar::@6 return to:@return -@40: scope:[] from @39 - to:@41 +@43: scope:[] from @42 + to:@44 mode_twoplanebitmap: scope:[mode_twoplanebitmap] from (byte*) mode_twoplanebitmap::PLANEA ← ((byte*)) (word/signed word/dword/signed dword) 16384 (byte*) mode_twoplanebitmap::PLANEB ← ((byte*)) (word/signed word/dword/signed dword) 24576 @@ -5536,8 +5630,8 @@ mode_twoplanebitmap::@18: scope:[mode_twoplanebitmap] from mode_twoplanebitmap: mode_twoplanebitmap::@return: scope:[mode_twoplanebitmap] from mode_twoplanebitmap::@18 return to:@return -@41: scope:[] from @40 - to:@42 +@44: scope:[] from @43 + to:@45 mode_sixsfred: scope:[mode_sixsfred] from (byte*) mode_sixsfred::PLANEA ← ((byte*)) (word/signed word/dword/signed dword) 16384 (byte*) mode_sixsfred::PLANEB ← ((byte*)) (word/signed word/dword/signed dword) 24576 @@ -5653,8 +5747,8 @@ mode_sixsfred::@14: scope:[mode_sixsfred] from mode_sixsfred::@13 mode_sixsfred::@return: scope:[mode_sixsfred] from mode_sixsfred::@14 return to:@return -@42: scope:[] from @41 - to:@43 +@45: scope:[] from @44 + to:@46 mode_sixsfred2: scope:[mode_sixsfred2] from (byte*) mode_sixsfred2::PLANEA ← ((byte*)) (word/signed word/dword/signed dword) 16384 (byte*) mode_sixsfred2::PLANEB ← ((byte*)) (word/signed word/dword/signed dword) 24576 @@ -5770,8 +5864,8 @@ mode_sixsfred2::@14: scope:[mode_sixsfred2] from mode_sixsfred2::@13 mode_sixsfred2::@return: scope:[mode_sixsfred2] from mode_sixsfred2::@14 return to:@return -@43: scope:[] from @42 - to:@44 +@46: scope:[] from @45 + to:@47 mode_8bpppixelcell: scope:[mode_8bpppixelcell] from (byte*) mode_8bpppixelcell::PLANEA ← ((byte*)) (word/signed word/dword/signed dword) 15360 (byte*) mode_8bpppixelcell::PLANEB ← ((byte*)) (word/signed word/dword/signed dword) 16384 @@ -5888,8 +5982,8 @@ mode_8bpppixelcell::@14: scope:[mode_8bpppixelcell] from mode_8bpppixelcell::@1 mode_8bpppixelcell::@return: scope:[mode_8bpppixelcell] from mode_8bpppixelcell::@14 return to:@return -@44: scope:[] from @43 - to:@45 +@47: scope:[] from @46 + to:@48 mode_8bppchunkybmm: scope:[mode_8bppchunkybmm] from (dword) mode_8bppchunkybmm::PLANEB ← (dword/signed dword) 131072 (byte~) mode_8bppchunkybmm::$0 ← (byte) DTV_HIGHCOLOR | (byte) DTV_LINEAR @@ -5973,11 +6067,15 @@ mode_8bppchunkybmm::@8: scope:[mode_8bppchunkybmm] from mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@return: scope:[mode_8bppchunkybmm] from mode_8bppchunkybmm::@8 return to:@return -@45: scope:[] from @44 +@48: scope:[] from @47 call main to:@end -@end: scope:[] from @45 +@end: scope:[] from @48 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Removing unused procedure print_str_ln Removing unused procedure print_str_at Removing unused procedure print_sword @@ -6222,13 +6320,12 @@ Creating constant string variable for inline (const string) $38 "e. Chunky 8bpp Creating constant string variable for inline (const string) $39 "----------------------------------------@" Creating constant string variable for inline (const string) $40 " (V) vicII (H) vicII+hicol (D) c64dtv@" Creating constant string variable for inline (const string) $41 "@" +Removing empty block @1 +Removing empty block @2 Removing empty block print_str_lines::@6 Removing empty block print_str_lines::@3 Removing empty block print_str_lines::@7 Removing empty block print_str_lines::@10 -Removing empty block @2 -Removing empty block @3 -Removing empty block @4 Removing empty block @5 Removing empty block @6 Removing empty block @7 @@ -6239,19 +6336,22 @@ Removing empty block @11 Removing empty block @12 Removing empty block @13 Removing empty block @14 +Removing empty block @15 Removing empty block @16 -Removing empty block keyboard_matrix_read::@1 Removing empty block @17 -Removing empty block keyboard_key_pressed::@1 -Removing empty block @18 Removing empty block @19 +Removing empty block keyboard_matrix_read::@1 Removing empty block @20 +Removing empty block keyboard_key_pressed::@1 Removing empty block @21 -Removing empty block bitmap_init::@8 +Removing empty block @22 Removing empty block @23 -Removing empty block bitmap_clear::@4 Removing empty block @24 -Removing empty block @25 +Removing empty block bitmap_init::@8 +Removing empty block @26 +Removing empty block bitmap_clear::@4 +Removing empty block @27 +Removing empty block @28 Removing empty block bitmap_line::@4 Removing empty block bitmap_line::@18 Removing empty block bitmap_line::@5 @@ -6266,15 +6366,15 @@ Removing empty block bitmap_line::@12 Removing empty block bitmap_line::@26 Removing empty block bitmap_line::@14 Removing empty block bitmap_line::@28 -Removing empty block @26 -Removing empty block bitmap_line_xdyi::@4 -Removing empty block @27 -Removing empty block bitmap_line_xdyd::@4 -Removing empty block @28 -Removing empty block bitmap_line_ydxi::@4 Removing empty block @29 -Removing empty block bitmap_line_ydxd::@4 +Removing empty block bitmap_line_xdyi::@4 Removing empty block @30 +Removing empty block bitmap_line_xdyd::@4 +Removing empty block @31 +Removing empty block bitmap_line_ydxi::@4 +Removing empty block @32 +Removing empty block bitmap_line_ydxd::@4 +Removing empty block @33 Removing empty block main::@4 Removing empty block main::@3 Removing empty block main::@5 @@ -6304,19 +6404,19 @@ Removing empty block mode_ctrl::@20 Removing empty block mode_ctrl::@21 Removing empty block mode_ctrl::@22 Removing empty block mode_ctrl::@31 -Removing empty block @33 -Removing empty block @34 -Removing empty block @35 Removing empty block @36 Removing empty block @37 Removing empty block @38 Removing empty block @39 Removing empty block @40 -Removing empty block mode_twoplanebitmap::@14 Removing empty block @41 Removing empty block @42 Removing empty block @43 +Removing empty block mode_twoplanebitmap::@14 Removing empty block @44 +Removing empty block @45 +Removing empty block @46 +Removing empty block @47 PROCEDURE MODIFY VARIABLE ANALYSIS print_str_lines modifies print_char_cursor print_str_lines modifies print_line_cursor @@ -6399,6 +6499,8 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + to:@3 +@3: scope:[] from @begin (byte*) DTV_FEATURE#0 ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) DTV_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53308 @@ -6426,7 +6528,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) DTV_COLOR_BANK_HI#0 ← ((byte*)) (word/dword/signed dword) 53303 (dword) DTV_COLOR_BANK_DEFAULT#0 ← (dword/signed dword) 120832 (byte*) DTV_GRAPHICS_VIC_BANK#0 ← ((byte*)) (word/dword/signed dword) 53309 - to:@1 + to:@4 dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@8 (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 ← phi( mode_8bppchunkybmm::@5/(byte) dtvSetCpuBankSegment1::cpuBankIdx#0 mode_8bppchunkybmm::@6/(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 mode_8bppchunkybmm::@8/(byte) dtvSetCpuBankSegment1::cpuBankIdx#2 ) (byte*) dtvSetCpuBankSegment1::cpuBank#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 @@ -6436,11 +6538,11 @@ dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from mode_8bppchunkybmm::@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 return to:@return -@1: scope:[] from @begin +@4: scope:[] from @3 (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 - to:@15 + to:@18 print_str_lines: scope:[print_str_lines] from menu::@48 (byte*) print_line_cursor#50 ← phi( menu::@48/(byte*) print_line_cursor#12 ) (byte*) print_char_cursor#52 ← phi( menu::@48/(byte*) print_char_cursor#13 ) @@ -6567,10 +6669,10 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#23 return to:@return -@15: scope:[] from @1 - (byte*) print_char_cursor#99 ← phi( @1/(byte*) print_char_cursor#0 ) - (byte*) print_line_cursor#99 ← phi( @1/(byte*) print_line_cursor#0 ) - (byte*) print_screen#80 ← phi( @1/(byte*) print_screen#0 ) +@18: scope:[] from @4 + (byte*) print_char_cursor#99 ← phi( @4/(byte*) print_char_cursor#0 ) + (byte*) print_line_cursor#99 ← phi( @4/(byte*) print_line_cursor#0 ) + (byte*) print_screen#80 ← phi( @4/(byte*) print_screen#0 ) (byte) KEY_3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) KEY_A#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 (byte) KEY_4#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 @@ -6591,7 +6693,7 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen (byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 60 (byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@22 + to:@25 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 ) *((byte*) CIA1_PORT_A#0) ← *((byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#1) @@ -6626,16 +6728,16 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p (byte) keyboard_key_pressed::return#1 ← (byte) keyboard_key_pressed::return#22 return to:@return -@22: scope:[] from @15 - (byte*) print_char_cursor#85 ← phi( @15/(byte*) print_char_cursor#99 ) - (byte*) print_line_cursor#85 ← phi( @15/(byte*) print_line_cursor#99 ) - (byte*) print_screen#66 ← phi( @15/(byte*) print_screen#80 ) +@25: scope:[] from @18 + (byte*) print_char_cursor#85 ← phi( @18/(byte*) print_char_cursor#99 ) + (byte*) print_line_cursor#85 ← phi( @18/(byte*) print_line_cursor#99 ) + (byte*) print_screen#66 ← phi( @18/(byte*) print_screen#80 ) (byte[256]) bitmap_plot_xlo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_xhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) } - to:@31 + to:@34 bitmap_init: scope:[bitmap_init] from mode_stdbitmap::@7 (byte*) bitmap_init::bitmap#2 ← phi( mode_stdbitmap::@7/(byte*) bitmap_init::bitmap#0 ) (byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128 @@ -7179,11 +7281,11 @@ bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@5 bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 return to:@return -main: scope:[main] from @45 - (byte) dtv_control#130 ← phi( @45/(byte) dtv_control#129 ) - (byte*) print_char_cursor#55 ← phi( @45/(byte*) print_char_cursor#51 ) - (byte*) print_line_cursor#52 ← phi( @45/(byte*) print_line_cursor#49 ) - (byte*) print_screen#34 ← phi( @45/(byte*) print_screen#33 ) +main: scope:[main] from @48 + (byte) dtv_control#130 ← phi( @48/(byte) dtv_control#129 ) + (byte*) print_char_cursor#55 ← phi( @48/(byte*) print_char_cursor#51 ) + (byte*) print_line_cursor#52 ← phi( @48/(byte*) print_line_cursor#49 ) + (byte*) print_screen#34 ← phi( @48/(byte*) print_screen#33 ) asm { sei } *((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0 *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0 @@ -7224,10 +7326,10 @@ main::@return: scope:[main] from main::@1 (byte) dtv_control#1 ← (byte) dtv_control#56 return to:@return -@31: scope:[] from @22 - (byte*) print_char_cursor#84 ← phi( @22/(byte*) print_char_cursor#85 ) - (byte*) print_line_cursor#83 ← phi( @22/(byte*) print_line_cursor#85 ) - (byte*) print_screen#65 ← phi( @22/(byte*) print_screen#66 ) +@34: scope:[] from @25 + (byte*) print_char_cursor#84 ← phi( @25/(byte*) print_char_cursor#85 ) + (byte*) print_line_cursor#83 ← phi( @25/(byte*) print_line_cursor#85 ) + (byte*) print_screen#65 ← phi( @25/(byte*) print_screen#66 ) (string~) $1 ← (const string) $21 + (const string) $22 (string~) $2 ← (string~) $1 + (const string) $23 (string~) $3 ← (string~) $2 + (const string) $24 @@ -7249,7 +7351,7 @@ main::@return: scope:[main] from main::@1 (string~) $19 ← (string~) $18 + (const string) $40 (string~) $20 ← (string~) $19 + (const string) $41 (byte[]) MENU_TEXT#0 ← (string~) $20 - to:@32 + to:@35 menu: scope:[menu] from main::@2 (byte) dtv_control#255 ← phi( main::@2/(byte) dtv_control#98 ) (byte*) print_char_cursor#100 ← phi( main::@2/(byte*) print_char_cursor#35 ) @@ -7791,12 +7893,12 @@ menu::@73: scope:[menu] from menu::@44 (byte) dtv_control#69 ← phi( menu::@44/(byte) dtv_control#53 ) (byte) dtv_control#14 ← (byte) dtv_control#69 to:menu::@return -@32: scope:[] from @31 - (byte*) print_char_cursor#70 ← phi( @31/(byte*) print_char_cursor#84 ) - (byte*) print_line_cursor#67 ← phi( @31/(byte*) print_line_cursor#83 ) - (byte*) print_screen#50 ← phi( @31/(byte*) print_screen#65 ) +@35: scope:[] from @34 + (byte*) print_char_cursor#70 ← phi( @34/(byte*) print_char_cursor#84 ) + (byte*) print_line_cursor#67 ← phi( @34/(byte*) print_line_cursor#83 ) + (byte*) print_screen#50 ← phi( @34/(byte*) print_screen#65 ) (byte) dtv_control#15 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@45 + to:@48 mode_ctrl: scope:[mode_ctrl] from mode_8bppchunkybmm::@11 mode_8bpppixelcell::@14 mode_ecmchar::@6 mode_hicolecmchar::@6 mode_hicolmcchar::@6 mode_hicolstdchar::@6 mode_mcchar::@6 mode_sixsfred2::@14 mode_sixsfred::@14 mode_stdbitmap::@8 mode_stdchar::@6 mode_twoplanebitmap::@18 (byte) dtv_control#145 ← phi( mode_8bppchunkybmm::@11/(byte) dtv_control#128 mode_8bpppixelcell::@14/(byte) dtv_control#127 mode_ecmchar::@6/(byte) dtv_control#118 mode_hicolecmchar::@6/(byte) dtv_control#122 mode_hicolmcchar::@6/(byte) dtv_control#123 mode_hicolstdchar::@6/(byte) dtv_control#121 mode_mcchar::@6/(byte) dtv_control#119 mode_sixsfred2::@14/(byte) dtv_control#126 mode_sixsfred::@14/(byte) dtv_control#125 mode_stdbitmap::@8/(byte) dtv_control#120 mode_stdchar::@6/(byte) dtv_control#117 mode_twoplanebitmap::@18/(byte) dtv_control#124 ) to:mode_ctrl::@1 @@ -9572,24 +9674,24 @@ mode_8bppchunkybmm::@return: scope:[mode_8bppchunkybmm] from mode_8bppchunkybmm (byte) dtv_control#53 ← (byte) dtv_control#96 return to:@return -@45: scope:[] from @32 - (byte) dtv_control#129 ← phi( @32/(byte) dtv_control#15 ) - (byte*) print_char_cursor#51 ← phi( @32/(byte*) print_char_cursor#70 ) - (byte*) print_line_cursor#49 ← phi( @32/(byte*) print_line_cursor#67 ) - (byte*) print_screen#33 ← phi( @32/(byte*) print_screen#50 ) +@48: scope:[] from @35 + (byte) dtv_control#129 ← phi( @35/(byte) dtv_control#15 ) + (byte*) print_char_cursor#51 ← phi( @35/(byte*) print_char_cursor#70 ) + (byte*) print_line_cursor#49 ← phi( @35/(byte*) print_line_cursor#67 ) + (byte*) print_screen#33 ← phi( @35/(byte*) print_screen#50 ) call main - to:@46 -@46: scope:[] from @45 - (byte) dtv_control#97 ← phi( @45/(byte) dtv_control#1 ) - (byte*) print_char_cursor#30 ← phi( @45/(byte*) print_char_cursor#11 ) - (byte*) print_line_cursor#29 ← phi( @45/(byte*) print_line_cursor#10 ) - (byte*) print_screen#16 ← phi( @45/(byte*) print_screen#4 ) + to:@49 +@49: scope:[] from @48 + (byte) dtv_control#97 ← phi( @48/(byte) dtv_control#1 ) + (byte*) print_char_cursor#30 ← phi( @48/(byte*) print_char_cursor#11 ) + (byte*) print_line_cursor#29 ← phi( @48/(byte*) print_line_cursor#10 ) + (byte*) print_screen#16 ← phi( @48/(byte*) print_screen#4 ) (byte*) print_screen#7 ← (byte*) print_screen#16 (byte*) print_line_cursor#15 ← (byte*) print_line_cursor#29 (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#30 (byte) dtv_control#54 ← (byte) dtv_control#97 to:@end -@end: scope:[] from @46 +@end: scope:[] from @49 SYMBOL TABLE SSA (string~) $1 @@ -9633,13 +9735,14 @@ SYMBOL TABLE SSA (string~) $7 (string~) $8 (string~) $9 -(label) @1 -(label) @15 -(label) @22 -(label) @31 -(label) @32 -(label) @45 -(label) @46 +(label) @18 +(label) @25 +(label) @3 +(label) @34 +(label) @35 +(label) @4 +(label) @48 +(label) @49 (label) @begin (label) @end (byte*) BGCOL @@ -14306,17 +14409,18 @@ Eliminating Noop Cast (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitma Succesful SSA optimization Pass2NopCastElimination Removing unused block main::@return Succesful SSA optimization Pass2EliminateUnusedBlocks -Culled Empty Block (label) @1 +Culled Empty Block (label) @3 +Culled Empty Block (label) @4 Culled Empty Block (label) print_str_lines::@2 Culled Empty Block (label) print_str_lines::@11 Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_cls::@2 -Culled Empty Block (label) @15 -Culled Empty Block (label) @22 +Culled Empty Block (label) @18 +Culled Empty Block (label) @25 Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5 Culled Empty Block (label) bitmap_init::@6 Culled Empty Block (label) main::@7 -Culled Empty Block (label) @31 +Culled Empty Block (label) @34 Culled Empty Block (label) menu::@18 Culled Empty Block (label) menu::@49 Culled Empty Block (label) menu::@3 @@ -14333,7 +14437,7 @@ Culled Empty Block (label) menu::@70 Culled Empty Block (label) menu::@72 Culled Empty Block (label) menu::@17 Culled Empty Block (label) menu::@73 -Culled Empty Block (label) @32 +Culled Empty Block (label) @35 Culled Empty Block (label) mode_ctrl::@2 Culled Empty Block (label) mode_ctrl::@5 Not culling empty block because it shares successor with its predecessor. (label) mode_ctrl::@29 @@ -14360,7 +14464,7 @@ Not culling empty block because it shares successor with its predecessor. (label Culled Empty Block (label) mode_8bpppixelcell::@15 Culled Empty Block (label) mode_8bppchunkybmm::@9 Culled Empty Block (label) mode_8bppchunkybmm::@12 -Culled Empty Block (label) @46 +Culled Empty Block (label) @49 Succesful SSA optimization Pass2CullEmptyBlocks Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5 Not culling empty block because it shares successor with its predecessor. (label) mode_ctrl::@29 @@ -15578,7 +15682,7 @@ Constant inlined bitmap_init::$1 = >(const byte*) mode_stdbitmap::BITMAP#0 Constant inlined dtv_control#39 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 Constant inlined dtv_control#36 = (const byte) DTV_HIGHCOLOR#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @45 @end main main::@2 menu menu::@1 menu::@2 menu::@19 menu::@47 menu::@48 menu::@4 menu::@50 menu::@22 menu::@return menu::@6 menu::@51 menu::@24 menu::@7 menu::@53 menu::@26 menu::@8 menu::@55 menu::@28 menu::@9 menu::@57 menu::@30 menu::@10 menu::@59 menu::@32 menu::@11 menu::@61 menu::@34 menu::@12 menu::@63 menu::@36 menu::@13 menu::@65 menu::@38 menu::@14 menu::@67 menu::@40 menu::@15 menu::@69 menu::@42 menu::@16 menu::@71 menu::@44 mode_8bppchunkybmm mode_8bppchunkybmm::@1 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@return mode_ctrl mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@32 mode_ctrl::@return mode_ctrl::@7 mode_ctrl::@33 mode_ctrl::@23 mode_ctrl::@8 mode_ctrl::@34 mode_ctrl::@24 mode_ctrl::@9 mode_ctrl::@35 mode_ctrl::@25 mode_ctrl::@10 mode_ctrl::@36 mode_ctrl::@26 mode_ctrl::@11 mode_ctrl::@37 mode_ctrl::@27 mode_ctrl::@12 mode_ctrl::@38 mode_ctrl::@28 mode_ctrl::@13 mode_ctrl::@39 mode_ctrl::@29 mode_ctrl::@14 mode_ctrl::@30 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return mode_8bpppixelcell mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@9 mode_8bpppixelcell::@10 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@6 mode_8bpppixelcell::@11 mode_8bpppixelcell::@7 mode_8bpppixelcell::@12 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@return mode_sixsfred mode_sixsfred::@1 mode_sixsfred::@8 mode_sixsfred::@2 mode_sixsfred::@3 mode_sixsfred::@9 mode_sixsfred::@4 mode_sixsfred::@5 mode_sixsfred::@11 mode_sixsfred::@6 mode_sixsfred::@7 mode_sixsfred::@13 mode_sixsfred::@14 mode_sixsfred::@return mode_twoplanebitmap mode_twoplanebitmap::@1 mode_twoplanebitmap::@10 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@11 mode_twoplanebitmap::@4 mode_twoplanebitmap::@5 mode_twoplanebitmap::@13 mode_twoplanebitmap::@7 mode_twoplanebitmap::@15 mode_twoplanebitmap::@8 mode_twoplanebitmap::@9 mode_twoplanebitmap::@17 mode_twoplanebitmap::@18 mode_twoplanebitmap::@return mode_twoplanebitmap::@6 mode_sixsfred2 mode_sixsfred2::@1 mode_sixsfred2::@8 mode_sixsfred2::@2 mode_sixsfred2::@3 mode_sixsfred2::@9 mode_sixsfred2::@4 mode_sixsfred2::@5 mode_sixsfred2::@11 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@13 mode_sixsfred2::@14 mode_sixsfred2::@return mode_hicolmcchar mode_hicolmcchar::@1 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@3 mode_hicolmcchar::@5 mode_hicolmcchar::@6 mode_hicolmcchar::@return mode_hicolecmchar mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 mode_hicolecmchar::@5 mode_hicolecmchar::@6 mode_hicolecmchar::@return mode_hicolstdchar mode_hicolstdchar::@1 mode_hicolstdchar::@4 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@5 mode_hicolstdchar::@6 mode_hicolstdchar::@return mode_stdbitmap mode_stdbitmap::@1 mode_stdbitmap::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@4 mode_stdbitmap::@11 mode_stdbitmap::@8 mode_stdbitmap::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return mode_mcchar mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@5 mode_mcchar::@6 mode_mcchar::@return mode_ecmchar mode_ecmchar::@1 mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@3 mode_ecmchar::@5 mode_ecmchar::@6 mode_ecmchar::@return mode_stdchar mode_stdchar::@1 mode_stdchar::@4 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return +Block Sequence Planned @begin @48 @end main main::@2 menu menu::@1 menu::@2 menu::@19 menu::@47 menu::@48 menu::@4 menu::@50 menu::@22 menu::@return menu::@6 menu::@51 menu::@24 menu::@7 menu::@53 menu::@26 menu::@8 menu::@55 menu::@28 menu::@9 menu::@57 menu::@30 menu::@10 menu::@59 menu::@32 menu::@11 menu::@61 menu::@34 menu::@12 menu::@63 menu::@36 menu::@13 menu::@65 menu::@38 menu::@14 menu::@67 menu::@40 menu::@15 menu::@69 menu::@42 menu::@16 menu::@71 menu::@44 mode_8bppchunkybmm mode_8bppchunkybmm::@1 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@return mode_ctrl mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@32 mode_ctrl::@return mode_ctrl::@7 mode_ctrl::@33 mode_ctrl::@23 mode_ctrl::@8 mode_ctrl::@34 mode_ctrl::@24 mode_ctrl::@9 mode_ctrl::@35 mode_ctrl::@25 mode_ctrl::@10 mode_ctrl::@36 mode_ctrl::@26 mode_ctrl::@11 mode_ctrl::@37 mode_ctrl::@27 mode_ctrl::@12 mode_ctrl::@38 mode_ctrl::@28 mode_ctrl::@13 mode_ctrl::@39 mode_ctrl::@29 mode_ctrl::@14 mode_ctrl::@30 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return mode_8bpppixelcell mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@9 mode_8bpppixelcell::@10 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@6 mode_8bpppixelcell::@11 mode_8bpppixelcell::@7 mode_8bpppixelcell::@12 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@return mode_sixsfred mode_sixsfred::@1 mode_sixsfred::@8 mode_sixsfred::@2 mode_sixsfred::@3 mode_sixsfred::@9 mode_sixsfred::@4 mode_sixsfred::@5 mode_sixsfred::@11 mode_sixsfred::@6 mode_sixsfred::@7 mode_sixsfred::@13 mode_sixsfred::@14 mode_sixsfred::@return mode_twoplanebitmap mode_twoplanebitmap::@1 mode_twoplanebitmap::@10 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@11 mode_twoplanebitmap::@4 mode_twoplanebitmap::@5 mode_twoplanebitmap::@13 mode_twoplanebitmap::@7 mode_twoplanebitmap::@15 mode_twoplanebitmap::@8 mode_twoplanebitmap::@9 mode_twoplanebitmap::@17 mode_twoplanebitmap::@18 mode_twoplanebitmap::@return mode_twoplanebitmap::@6 mode_sixsfred2 mode_sixsfred2::@1 mode_sixsfred2::@8 mode_sixsfred2::@2 mode_sixsfred2::@3 mode_sixsfred2::@9 mode_sixsfred2::@4 mode_sixsfred2::@5 mode_sixsfred2::@11 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@13 mode_sixsfred2::@14 mode_sixsfred2::@return mode_hicolmcchar mode_hicolmcchar::@1 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@3 mode_hicolmcchar::@5 mode_hicolmcchar::@6 mode_hicolmcchar::@return mode_hicolecmchar mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 mode_hicolecmchar::@5 mode_hicolecmchar::@6 mode_hicolecmchar::@return mode_hicolstdchar mode_hicolstdchar::@1 mode_hicolstdchar::@4 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@5 mode_hicolstdchar::@6 mode_hicolstdchar::@return mode_stdbitmap mode_stdbitmap::@1 mode_stdbitmap::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@4 mode_stdbitmap::@11 mode_stdbitmap::@8 mode_stdbitmap::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return mode_mcchar mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@5 mode_mcchar::@6 mode_mcchar::@return mode_ecmchar mode_ecmchar::@1 mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@3 mode_ecmchar::@5 mode_ecmchar::@6 mode_ecmchar::@return mode_stdchar mode_stdchar::@1 mode_stdchar::@4 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return Added new block during phi lifting menu::@74(between menu::@1 and menu::@1) Added new block during phi lifting menu::@75(between menu::@2 and menu::@2) Added new block during phi lifting mode_8bppchunkybmm::@13(between mode_8bppchunkybmm::@1 and mode_8bppchunkybmm::@1) @@ -15660,9 +15764,9 @@ Added new block during phi lifting print_str_lines::@13(between print_str_lines: Added new block during phi lifting print_str_lines::@14(between print_str_lines::@4 and print_str_lines::@5) Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) -Block Sequence Planned @begin @45 @end main main::@2 menu menu::@1 menu::@2 menu::@19 menu::@47 menu::@48 menu::@4 menu::@50 menu::@22 menu::@return menu::@6 menu::@51 menu::@24 menu::@7 menu::@53 menu::@26 menu::@8 menu::@55 menu::@28 menu::@9 menu::@57 menu::@30 menu::@10 menu::@59 menu::@32 menu::@11 menu::@61 menu::@34 menu::@12 menu::@63 menu::@36 menu::@13 menu::@65 menu::@38 menu::@14 menu::@67 menu::@40 menu::@15 menu::@69 menu::@42 menu::@16 menu::@71 menu::@44 menu::@75 menu::@74 mode_8bppchunkybmm mode_8bppchunkybmm::@1 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@return mode_8bppchunkybmm::@14 mode_8bppchunkybmm::@15 mode_8bppchunkybmm::@16 mode_8bppchunkybmm::@13 mode_ctrl mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@32 mode_ctrl::@return mode_ctrl::@7 mode_ctrl::@33 mode_ctrl::@23 mode_ctrl::@8 mode_ctrl::@34 mode_ctrl::@24 mode_ctrl::@9 mode_ctrl::@35 mode_ctrl::@25 mode_ctrl::@10 mode_ctrl::@36 mode_ctrl::@26 mode_ctrl::@11 mode_ctrl::@37 mode_ctrl::@27 mode_ctrl::@12 mode_ctrl::@38 mode_ctrl::@28 mode_ctrl::@13 mode_ctrl::@39 mode_ctrl::@29 mode_ctrl::@14 mode_ctrl::@30 mode_ctrl::@46 mode_ctrl::@45 mode_ctrl::@44 mode_ctrl::@43 mode_ctrl::@42 mode_ctrl::@41 mode_ctrl::@40 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return mode_8bpppixelcell mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@9 mode_8bpppixelcell::@10 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@6 mode_8bpppixelcell::@11 mode_8bpppixelcell::@7 mode_8bpppixelcell::@12 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@return mode_8bpppixelcell::@19 mode_8bpppixelcell::@20 mode_8bpppixelcell::@21 mode_8bpppixelcell::@17 mode_8bpppixelcell::@18 mode_8bpppixelcell::@16 mode_sixsfred mode_sixsfred::@1 mode_sixsfred::@8 mode_sixsfred::@2 mode_sixsfred::@3 mode_sixsfred::@9 mode_sixsfred::@4 mode_sixsfred::@5 mode_sixsfred::@11 mode_sixsfred::@6 mode_sixsfred::@7 mode_sixsfred::@13 mode_sixsfred::@14 mode_sixsfred::@return mode_sixsfred::@21 mode_sixsfred::@22 mode_sixsfred::@19 mode_sixsfred::@20 mode_sixsfred::@17 mode_sixsfred::@18 mode_sixsfred::@16 mode_twoplanebitmap mode_twoplanebitmap::@1 mode_twoplanebitmap::@10 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@11 mode_twoplanebitmap::@4 mode_twoplanebitmap::@5 mode_twoplanebitmap::@13 mode_twoplanebitmap::@7 mode_twoplanebitmap::@15 mode_twoplanebitmap::@8 mode_twoplanebitmap::@9 mode_twoplanebitmap::@17 mode_twoplanebitmap::@18 mode_twoplanebitmap::@return mode_twoplanebitmap::@25 mode_twoplanebitmap::@26 mode_twoplanebitmap::@23 mode_twoplanebitmap::@24 mode_twoplanebitmap::@6 mode_twoplanebitmap::@21 mode_twoplanebitmap::@22 mode_twoplanebitmap::@20 mode_sixsfred2 mode_sixsfred2::@1 mode_sixsfred2::@8 mode_sixsfred2::@2 mode_sixsfred2::@3 mode_sixsfred2::@9 mode_sixsfred2::@4 mode_sixsfred2::@5 mode_sixsfred2::@11 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@13 mode_sixsfred2::@14 mode_sixsfred2::@return mode_sixsfred2::@21 mode_sixsfred2::@22 mode_sixsfred2::@19 mode_sixsfred2::@20 mode_sixsfred2::@17 mode_sixsfred2::@18 mode_sixsfred2::@16 mode_hicolmcchar mode_hicolmcchar::@1 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@3 mode_hicolmcchar::@5 mode_hicolmcchar::@6 mode_hicolmcchar::@return mode_hicolmcchar::@9 mode_hicolmcchar::@10 mode_hicolmcchar::@8 mode_hicolecmchar mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 mode_hicolecmchar::@5 mode_hicolecmchar::@6 mode_hicolecmchar::@return mode_hicolecmchar::@9 mode_hicolecmchar::@10 mode_hicolecmchar::@8 mode_hicolstdchar mode_hicolstdchar::@1 mode_hicolstdchar::@4 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@5 mode_hicolstdchar::@6 mode_hicolstdchar::@return mode_hicolstdchar::@9 mode_hicolstdchar::@10 mode_hicolstdchar::@8 mode_stdbitmap mode_stdbitmap::@1 mode_stdbitmap::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@4 mode_stdbitmap::@11 mode_stdbitmap::@8 mode_stdbitmap::@return mode_stdbitmap::@16 mode_stdbitmap::@14 mode_stdbitmap::@15 mode_stdbitmap::@13 bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_line_xdyi::@6 bitmap_line_xdyi::@7 bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_ydxi::@6 bitmap_line_ydxi::@7 bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_xdyd::@6 bitmap_line_xdyd::@7 bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_line_ydxd::@6 bitmap_line_ydxd::@7 bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_clear::@5 bitmap_clear::@6 bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@11 bitmap_init::@12 bitmap_init::@9 bitmap_init::@10 mode_mcchar mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@5 mode_mcchar::@6 mode_mcchar::@return mode_mcchar::@9 mode_mcchar::@10 mode_mcchar::@8 mode_ecmchar mode_ecmchar::@1 mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@3 mode_ecmchar::@5 mode_ecmchar::@6 mode_ecmchar::@return mode_ecmchar::@9 mode_ecmchar::@10 mode_ecmchar::@8 mode_stdchar mode_stdchar::@1 mode_stdchar::@4 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@return mode_stdchar::@9 mode_stdchar::@10 mode_stdchar::@8 print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@12 print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_str_lines::@13 print_str_lines::@14 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_cls print_cls::@1 print_cls::@return print_cls::@3 print_set_screen print_set_screen::@return +Block Sequence Planned @begin @48 @end main main::@2 menu menu::@1 menu::@2 menu::@19 menu::@47 menu::@48 menu::@4 menu::@50 menu::@22 menu::@return menu::@6 menu::@51 menu::@24 menu::@7 menu::@53 menu::@26 menu::@8 menu::@55 menu::@28 menu::@9 menu::@57 menu::@30 menu::@10 menu::@59 menu::@32 menu::@11 menu::@61 menu::@34 menu::@12 menu::@63 menu::@36 menu::@13 menu::@65 menu::@38 menu::@14 menu::@67 menu::@40 menu::@15 menu::@69 menu::@42 menu::@16 menu::@71 menu::@44 menu::@75 menu::@74 mode_8bppchunkybmm mode_8bppchunkybmm::@1 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@return mode_8bppchunkybmm::@14 mode_8bppchunkybmm::@15 mode_8bppchunkybmm::@16 mode_8bppchunkybmm::@13 mode_ctrl mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@32 mode_ctrl::@return mode_ctrl::@7 mode_ctrl::@33 mode_ctrl::@23 mode_ctrl::@8 mode_ctrl::@34 mode_ctrl::@24 mode_ctrl::@9 mode_ctrl::@35 mode_ctrl::@25 mode_ctrl::@10 mode_ctrl::@36 mode_ctrl::@26 mode_ctrl::@11 mode_ctrl::@37 mode_ctrl::@27 mode_ctrl::@12 mode_ctrl::@38 mode_ctrl::@28 mode_ctrl::@13 mode_ctrl::@39 mode_ctrl::@29 mode_ctrl::@14 mode_ctrl::@30 mode_ctrl::@46 mode_ctrl::@45 mode_ctrl::@44 mode_ctrl::@43 mode_ctrl::@42 mode_ctrl::@41 mode_ctrl::@40 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return mode_8bpppixelcell mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@9 mode_8bpppixelcell::@10 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@6 mode_8bpppixelcell::@11 mode_8bpppixelcell::@7 mode_8bpppixelcell::@12 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@return mode_8bpppixelcell::@19 mode_8bpppixelcell::@20 mode_8bpppixelcell::@21 mode_8bpppixelcell::@17 mode_8bpppixelcell::@18 mode_8bpppixelcell::@16 mode_sixsfred mode_sixsfred::@1 mode_sixsfred::@8 mode_sixsfred::@2 mode_sixsfred::@3 mode_sixsfred::@9 mode_sixsfred::@4 mode_sixsfred::@5 mode_sixsfred::@11 mode_sixsfred::@6 mode_sixsfred::@7 mode_sixsfred::@13 mode_sixsfred::@14 mode_sixsfred::@return mode_sixsfred::@21 mode_sixsfred::@22 mode_sixsfred::@19 mode_sixsfred::@20 mode_sixsfred::@17 mode_sixsfred::@18 mode_sixsfred::@16 mode_twoplanebitmap mode_twoplanebitmap::@1 mode_twoplanebitmap::@10 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@11 mode_twoplanebitmap::@4 mode_twoplanebitmap::@5 mode_twoplanebitmap::@13 mode_twoplanebitmap::@7 mode_twoplanebitmap::@15 mode_twoplanebitmap::@8 mode_twoplanebitmap::@9 mode_twoplanebitmap::@17 mode_twoplanebitmap::@18 mode_twoplanebitmap::@return mode_twoplanebitmap::@25 mode_twoplanebitmap::@26 mode_twoplanebitmap::@23 mode_twoplanebitmap::@24 mode_twoplanebitmap::@6 mode_twoplanebitmap::@21 mode_twoplanebitmap::@22 mode_twoplanebitmap::@20 mode_sixsfred2 mode_sixsfred2::@1 mode_sixsfred2::@8 mode_sixsfred2::@2 mode_sixsfred2::@3 mode_sixsfred2::@9 mode_sixsfred2::@4 mode_sixsfred2::@5 mode_sixsfred2::@11 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@13 mode_sixsfred2::@14 mode_sixsfred2::@return mode_sixsfred2::@21 mode_sixsfred2::@22 mode_sixsfred2::@19 mode_sixsfred2::@20 mode_sixsfred2::@17 mode_sixsfred2::@18 mode_sixsfred2::@16 mode_hicolmcchar mode_hicolmcchar::@1 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@3 mode_hicolmcchar::@5 mode_hicolmcchar::@6 mode_hicolmcchar::@return mode_hicolmcchar::@9 mode_hicolmcchar::@10 mode_hicolmcchar::@8 mode_hicolecmchar mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 mode_hicolecmchar::@5 mode_hicolecmchar::@6 mode_hicolecmchar::@return mode_hicolecmchar::@9 mode_hicolecmchar::@10 mode_hicolecmchar::@8 mode_hicolstdchar mode_hicolstdchar::@1 mode_hicolstdchar::@4 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@5 mode_hicolstdchar::@6 mode_hicolstdchar::@return mode_hicolstdchar::@9 mode_hicolstdchar::@10 mode_hicolstdchar::@8 mode_stdbitmap mode_stdbitmap::@1 mode_stdbitmap::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@4 mode_stdbitmap::@11 mode_stdbitmap::@8 mode_stdbitmap::@return mode_stdbitmap::@16 mode_stdbitmap::@14 mode_stdbitmap::@15 mode_stdbitmap::@13 bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_line_xdyi::@6 bitmap_line_xdyi::@7 bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_ydxi::@6 bitmap_line_ydxi::@7 bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_xdyd::@6 bitmap_line_xdyd::@7 bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_line_ydxd::@6 bitmap_line_ydxd::@7 bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_clear::@5 bitmap_clear::@6 bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@11 bitmap_init::@12 bitmap_init::@9 bitmap_init::@10 mode_mcchar mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@5 mode_mcchar::@6 mode_mcchar::@return mode_mcchar::@9 mode_mcchar::@10 mode_mcchar::@8 mode_ecmchar mode_ecmchar::@1 mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@3 mode_ecmchar::@5 mode_ecmchar::@6 mode_ecmchar::@return mode_ecmchar::@9 mode_ecmchar::@10 mode_ecmchar::@8 mode_stdchar mode_stdchar::@1 mode_stdchar::@4 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@return mode_stdchar::@9 mode_stdchar::@10 mode_stdchar::@8 print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@12 print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_str_lines::@13 print_str_lines::@14 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_cls print_cls::@1 print_cls::@return print_cls::@3 print_set_screen print_set_screen::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @45 +Adding NOP phi() at start of @48 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@2 Adding NOP phi() at start of menu::@47 @@ -16139,9 +16243,9 @@ Culled Empty Block (label) print_str_lines::@13 Culled Empty Block (label) print_str_lines::@14 Culled Empty Block (label) print_ln::@3 Culled Empty Block (label) print_cls::@3 -Block Sequence Planned @begin @45 @end main main::@2 menu menu::@1 menu::@2 menu::@19 menu::@47 menu::@48 menu::@4 menu::@50 menu::@22 menu::@return menu::@6 menu::@51 menu::@24 menu::@7 menu::@53 menu::@26 menu::@8 menu::@55 menu::@28 menu::@9 menu::@57 menu::@30 menu::@10 menu::@59 menu::@32 menu::@11 menu::@61 menu::@34 menu::@12 menu::@63 menu::@36 menu::@13 menu::@65 menu::@38 menu::@14 menu::@67 menu::@40 menu::@15 menu::@69 menu::@42 menu::@16 menu::@71 menu::@44 mode_8bppchunkybmm mode_8bppchunkybmm::@1 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@return mode_ctrl mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@32 mode_ctrl::@return mode_ctrl::@7 mode_ctrl::@33 mode_ctrl::@23 mode_ctrl::@8 mode_ctrl::@34 mode_ctrl::@24 mode_ctrl::@9 mode_ctrl::@35 mode_ctrl::@25 mode_ctrl::@10 mode_ctrl::@36 mode_ctrl::@26 mode_ctrl::@11 mode_ctrl::@37 mode_ctrl::@27 mode_ctrl::@12 mode_ctrl::@38 mode_ctrl::@28 mode_ctrl::@13 mode_ctrl::@39 mode_ctrl::@14 mode_ctrl::@30 mode_ctrl::@46 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return mode_8bpppixelcell mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@9 mode_8bpppixelcell::@10 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@6 mode_8bpppixelcell::@11 mode_8bpppixelcell::@7 mode_8bpppixelcell::@12 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@return mode_sixsfred mode_sixsfred::@1 mode_sixsfred::@8 mode_sixsfred::@2 mode_sixsfred::@3 mode_sixsfred::@9 mode_sixsfred::@4 mode_sixsfred::@5 mode_sixsfred::@11 mode_sixsfred::@6 mode_sixsfred::@7 mode_sixsfred::@13 mode_sixsfred::@14 mode_sixsfred::@return mode_twoplanebitmap mode_twoplanebitmap::@1 mode_twoplanebitmap::@10 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@11 mode_twoplanebitmap::@4 mode_twoplanebitmap::@5 mode_twoplanebitmap::@13 mode_twoplanebitmap::@7 mode_twoplanebitmap::@15 mode_twoplanebitmap::@8 mode_twoplanebitmap::@9 mode_twoplanebitmap::@17 mode_twoplanebitmap::@18 mode_twoplanebitmap::@return mode_twoplanebitmap::@6 mode_sixsfred2 mode_sixsfred2::@1 mode_sixsfred2::@8 mode_sixsfred2::@2 mode_sixsfred2::@3 mode_sixsfred2::@9 mode_sixsfred2::@4 mode_sixsfred2::@5 mode_sixsfred2::@11 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@13 mode_sixsfred2::@14 mode_sixsfred2::@return mode_hicolmcchar mode_hicolmcchar::@1 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@3 mode_hicolmcchar::@5 mode_hicolmcchar::@6 mode_hicolmcchar::@return mode_hicolecmchar mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 mode_hicolecmchar::@5 mode_hicolecmchar::@6 mode_hicolecmchar::@return mode_hicolstdchar mode_hicolstdchar::@1 mode_hicolstdchar::@4 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@5 mode_hicolstdchar::@6 mode_hicolstdchar::@return mode_stdbitmap mode_stdbitmap::@1 mode_stdbitmap::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@4 mode_stdbitmap::@11 mode_stdbitmap::@8 mode_stdbitmap::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@10 mode_mcchar mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@5 mode_mcchar::@6 mode_mcchar::@return mode_ecmchar mode_ecmchar::@1 mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@3 mode_ecmchar::@5 mode_ecmchar::@6 mode_ecmchar::@return mode_stdchar mode_stdchar::@1 mode_stdchar::@4 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return +Block Sequence Planned @begin @48 @end main main::@2 menu menu::@1 menu::@2 menu::@19 menu::@47 menu::@48 menu::@4 menu::@50 menu::@22 menu::@return menu::@6 menu::@51 menu::@24 menu::@7 menu::@53 menu::@26 menu::@8 menu::@55 menu::@28 menu::@9 menu::@57 menu::@30 menu::@10 menu::@59 menu::@32 menu::@11 menu::@61 menu::@34 menu::@12 menu::@63 menu::@36 menu::@13 menu::@65 menu::@38 menu::@14 menu::@67 menu::@40 menu::@15 menu::@69 menu::@42 menu::@16 menu::@71 menu::@44 mode_8bppchunkybmm mode_8bppchunkybmm::@1 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@return mode_ctrl mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@32 mode_ctrl::@return mode_ctrl::@7 mode_ctrl::@33 mode_ctrl::@23 mode_ctrl::@8 mode_ctrl::@34 mode_ctrl::@24 mode_ctrl::@9 mode_ctrl::@35 mode_ctrl::@25 mode_ctrl::@10 mode_ctrl::@36 mode_ctrl::@26 mode_ctrl::@11 mode_ctrl::@37 mode_ctrl::@27 mode_ctrl::@12 mode_ctrl::@38 mode_ctrl::@28 mode_ctrl::@13 mode_ctrl::@39 mode_ctrl::@14 mode_ctrl::@30 mode_ctrl::@46 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return mode_8bpppixelcell mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@9 mode_8bpppixelcell::@10 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@6 mode_8bpppixelcell::@11 mode_8bpppixelcell::@7 mode_8bpppixelcell::@12 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@return mode_sixsfred mode_sixsfred::@1 mode_sixsfred::@8 mode_sixsfred::@2 mode_sixsfred::@3 mode_sixsfred::@9 mode_sixsfred::@4 mode_sixsfred::@5 mode_sixsfred::@11 mode_sixsfred::@6 mode_sixsfred::@7 mode_sixsfred::@13 mode_sixsfred::@14 mode_sixsfred::@return mode_twoplanebitmap mode_twoplanebitmap::@1 mode_twoplanebitmap::@10 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@11 mode_twoplanebitmap::@4 mode_twoplanebitmap::@5 mode_twoplanebitmap::@13 mode_twoplanebitmap::@7 mode_twoplanebitmap::@15 mode_twoplanebitmap::@8 mode_twoplanebitmap::@9 mode_twoplanebitmap::@17 mode_twoplanebitmap::@18 mode_twoplanebitmap::@return mode_twoplanebitmap::@6 mode_sixsfred2 mode_sixsfred2::@1 mode_sixsfred2::@8 mode_sixsfred2::@2 mode_sixsfred2::@3 mode_sixsfred2::@9 mode_sixsfred2::@4 mode_sixsfred2::@5 mode_sixsfred2::@11 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@13 mode_sixsfred2::@14 mode_sixsfred2::@return mode_hicolmcchar mode_hicolmcchar::@1 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@3 mode_hicolmcchar::@5 mode_hicolmcchar::@6 mode_hicolmcchar::@return mode_hicolecmchar mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 mode_hicolecmchar::@5 mode_hicolecmchar::@6 mode_hicolecmchar::@return mode_hicolstdchar mode_hicolstdchar::@1 mode_hicolstdchar::@4 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@5 mode_hicolstdchar::@6 mode_hicolstdchar::@return mode_stdbitmap mode_stdbitmap::@1 mode_stdbitmap::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@4 mode_stdbitmap::@11 mode_stdbitmap::@8 mode_stdbitmap::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@10 mode_mcchar mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@5 mode_mcchar::@6 mode_mcchar::@return mode_ecmchar mode_ecmchar::@1 mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@3 mode_ecmchar::@5 mode_ecmchar::@6 mode_ecmchar::@return mode_stdchar mode_stdchar::@1 mode_stdchar::@4 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @45 +Adding NOP phi() at start of @48 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@2 Adding NOP phi() at start of menu::@47 @@ -16235,14 +16339,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@45 -@45: scope:[] from @begin + to:@48 +@48: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @45 +@end: scope:[] from @48 [3] phi() [ ] ( ) -main: scope:[main] from @45 +main: scope:[main] from @48 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) @@ -17796,291 +17900,291 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen DOMINATORS @begin dominated by @begin -@45 dominated by @begin @45 -@end dominated by @end @begin @45 -main dominated by @begin @45 main -main::@2 dominated by @begin @45 main::@2 main -menu dominated by @begin @45 main::@2 menu main -menu::@1 dominated by @begin @45 menu::@1 main::@2 menu main -menu::@2 dominated by @begin @45 menu::@1 menu::@2 main::@2 menu main -menu::@19 dominated by @begin @45 menu::@1 menu::@2 main::@2 menu main menu::@19 -menu::@47 dominated by @begin @45 menu::@1 menu::@2 main::@2 menu::@47 menu main menu::@19 -menu::@48 dominated by @begin @45 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu main menu::@19 -menu::@4 dominated by @begin @45 menu::@4 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu main menu::@19 -menu::@50 dominated by @begin @45 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19 -menu::@22 dominated by @begin @45 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 -menu::@return dominated by @begin menu::@return @45 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19 -menu::@6 dominated by @begin @45 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19 -menu::@51 dominated by @begin @45 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19 -menu::@24 dominated by @begin @45 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 -menu::@7 dominated by @begin @45 menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19 -menu::@53 dominated by @begin @45 menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19 -menu::@26 dominated by @begin @45 menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 -menu::@8 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19 -menu::@55 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@19 -menu::@28 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19 -menu::@9 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@19 -menu::@57 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 main menu::@19 -menu::@30 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 -menu::@10 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 main menu::@19 menu::@10 -menu::@59 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@10 -menu::@32 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 -menu::@11 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@11 menu::@10 -menu::@61 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@11 menu::@10 -menu::@34 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@34 menu::@19 menu::@11 menu::@10 -menu::@12 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@12 menu::@11 menu::@10 -menu::@63 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@12 menu::@11 menu::@10 -menu::@36 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -menu::@13 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -menu::@65 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -menu::@38 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -menu::@14 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -menu::@67 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -menu::@40 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@40 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -menu::@15 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -menu::@69 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -menu::@42 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -menu::@16 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -menu::@71 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -menu::@44 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_8bppchunkybmm dominated by mode_8bppchunkybmm @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_8bppchunkybmm::@1 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_8bppchunkybmm::@5 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_8bppchunkybmm::@2 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_8bppchunkybmm::@3 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_8bppchunkybmm::@6 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_8bppchunkybmm::@10 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_8bppchunkybmm::@4 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_8bppchunkybmm::@7 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_8bppchunkybmm::@8 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_8bppchunkybmm::@11 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_8bppchunkybmm::@return dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 mode_8bppchunkybmm::@return menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_ctrl dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19 -mode_ctrl::@1 dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu main mode_ctrl::@1 menu::@19 -mode_ctrl::@4 dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu main mode_ctrl::@1 mode_ctrl::@4 menu::@19 -mode_ctrl::@6 dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 menu::@19 -mode_ctrl::@32 dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 menu::@19 -mode_ctrl::@return dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@return mode_ctrl::@32 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 menu::@19 -mode_ctrl::@7 dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@7 menu::@19 -mode_ctrl::@33 dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@7 menu::@19 -mode_ctrl::@23 dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 main mode_ctrl::@23 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@7 menu::@19 -mode_ctrl::@8 dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 menu::@19 -mode_ctrl::@34 dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 menu::@19 -mode_ctrl::@24 dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 main mode_ctrl::@24 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 menu::@19 -mode_ctrl::@9 dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@35 dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@25 dominated by @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@25 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@10 dominated by mode_ctrl::@10 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@36 dominated by mode_ctrl::@10 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@26 dominated by mode_ctrl::@10 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@26 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@11 dominated by mode_ctrl::@10 mode_ctrl::@11 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@37 dominated by mode_ctrl::@10 mode_ctrl::@11 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@27 dominated by mode_ctrl::@10 mode_ctrl::@11 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@27 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@12 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@38 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@28 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@28 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@13 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@39 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@14 dominated by mode_ctrl::@14 mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@30 dominated by mode_ctrl::@14 mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@30 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 -mode_ctrl::@46 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @45 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 mode_ctrl::@46 menu::@19 -keyboard_key_pressed dominated by @begin @45 menu::@4 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main menu::@19 -keyboard_key_pressed::@2 dominated by keyboard_key_pressed::@2 @begin @45 menu::@4 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main menu::@19 -keyboard_key_pressed::@return dominated by keyboard_key_pressed::@return keyboard_key_pressed::@2 @begin @45 menu::@4 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main menu::@19 -keyboard_matrix_read dominated by @begin @45 menu::@4 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main keyboard_matrix_read menu::@19 -keyboard_matrix_read::@return dominated by @begin @45 menu::@4 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main keyboard_matrix_read keyboard_matrix_read::@return menu::@19 -dtvSetCpuBankSegment1 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 dtvSetCpuBankSegment1 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -dtvSetCpuBankSegment1::@return dominated by mode_8bppchunkybmm dtvSetCpuBankSegment1::@return mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 dtvSetCpuBankSegment1 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 -mode_8bpppixelcell dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@1 dominated by mode_8bpppixelcell::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@2 dominated by mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@3 dominated by mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@9 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@10 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@4 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@5 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@6 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@11 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@11 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@7 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@12 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@13 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@13 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@14 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_8bpppixelcell::@return dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 mode_8bpppixelcell::@return menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 -mode_sixsfred dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_sixsfred::@1 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 menu menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_sixsfred::@8 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 menu mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_sixsfred::@2 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@2 menu mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_sixsfred::@3 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_sixsfred::@9 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_sixsfred::@4 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@4 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_sixsfred::@5 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_sixsfred::@11 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_sixsfred::@6 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_sixsfred::@7 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_sixsfred::@13 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 mode_sixsfred::@13 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_sixsfred::@14 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 mode_sixsfred::@14 mode_sixsfred::@13 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_sixsfred::@return dominated by mode_sixsfred::@return @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 mode_sixsfred::@14 mode_sixsfred::@13 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 -mode_twoplanebitmap dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@1 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@10 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@2 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@3 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@11 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@4 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@5 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@13 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@13 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@7 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@15 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@8 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@9 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@17 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@17 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@18 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@18 mode_twoplanebitmap::@17 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@return dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 mode_twoplanebitmap::@return main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@18 mode_twoplanebitmap::@17 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_twoplanebitmap::@6 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@6 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 -mode_sixsfred2 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -mode_sixsfred2::@1 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -mode_sixsfred2::@8 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@4 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -mode_sixsfred2::@2 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -mode_sixsfred2::@3 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -mode_sixsfred2::@9 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -mode_sixsfred2::@4 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -mode_sixsfred2::@5 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -mode_sixsfred2::@11 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -mode_sixsfred2::@6 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -mode_sixsfred2::@7 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -mode_sixsfred2::@13 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 mode_sixsfred2::@13 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -mode_sixsfred2::@14 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 mode_sixsfred2::@13 mode_sixsfred2::@14 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 -mode_sixsfred2::@return dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 mode_sixsfred2::@13 mode_sixsfred2::@14 menu::@36 mode_sixsfred2::@return menu::@19 menu::@12 menu::@11 menu::@10 -mode_hicolmcchar dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 menu::@19 menu::@11 menu::@10 -mode_hicolmcchar::@1 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10 -mode_hicolmcchar::@4 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10 -mode_hicolmcchar::@2 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10 -mode_hicolmcchar::@3 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10 -mode_hicolmcchar::@5 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 mode_hicolmcchar::@5 menu::@19 menu::@11 menu::@10 -mode_hicolmcchar::@6 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 mode_hicolmcchar::@6 mode_hicolmcchar::@5 menu::@19 menu::@11 menu::@10 -mode_hicolmcchar::@return dominated by mode_hicolmcchar::@return @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 mode_hicolmcchar::@6 mode_hicolmcchar::@5 menu::@19 menu::@11 menu::@10 -mode_hicolecmchar dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 -mode_hicolecmchar::@1 dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 -mode_hicolecmchar::@4 dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 -mode_hicolecmchar::@2 dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 -mode_hicolecmchar::@3 dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 -mode_hicolecmchar::@5 dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@5 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 -mode_hicolecmchar::@6 dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@5 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 mode_hicolecmchar::@6 menu::@59 main menu::@32 menu::@19 menu::@10 -mode_hicolecmchar::@return dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@5 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 mode_hicolecmchar::@6 menu::@59 main mode_hicolecmchar::@return menu::@32 menu::@19 menu::@10 -mode_hicolstdchar dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 -mode_hicolstdchar::@1 dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@1 -mode_hicolstdchar::@4 dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@4 mode_hicolstdchar::@1 -mode_hicolstdchar::@2 dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@4 mode_hicolstdchar::@1 -mode_hicolstdchar::@3 dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@1 -mode_hicolstdchar::@5 dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@5 mode_hicolstdchar::@1 -mode_hicolstdchar::@6 dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main mode_hicolstdchar::@6 menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@5 mode_hicolstdchar::@1 -mode_hicolstdchar::@return dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 mode_hicolstdchar::@return menu menu::@57 menu::@55 menu::@30 main mode_hicolstdchar::@6 menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@5 mode_hicolstdchar::@1 -mode_stdbitmap dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19 -mode_stdbitmap::@1 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19 mode_stdbitmap::@1 -mode_stdbitmap::@5 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@1 -mode_stdbitmap::@2 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@1 -mode_stdbitmap::@3 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@1 -mode_stdbitmap::@6 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@1 -mode_stdbitmap::@7 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 -mode_stdbitmap::@9 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -mode_stdbitmap::@4 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -mode_stdbitmap::@11 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@11 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -mode_stdbitmap::@8 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@11 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@8 mode_stdbitmap::@9 mode_stdbitmap::@1 -mode_stdbitmap::@return dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@11 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@return mode_stdbitmap::@7 mode_stdbitmap::@8 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@15 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@16 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@16 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@17 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@17 bitmap_line::@16 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@return dominated by bitmap_line::@return bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@3 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@3 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@16 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@2 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@2 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@20 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@2 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@15 bitmap_line::@20 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@6 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@2 bitmap_line::@6 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@1 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@23 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@23 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@24 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@24 bitmap_line::@23 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@10 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 bitmap_line::@10 main::@2 bitmap_line::@23 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@9 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 bitmap_line::@9 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@27 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 bitmap_line::@9 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_line::@27 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line::@13 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 bitmap_line::@9 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 bitmap_line::@13 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_xdyi dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_xdyi::@1 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@1 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_xdyi::@5 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_xdyi::@3 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@1 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_xdyi::@2 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_xdyi::@return dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 bitmap_line_xdyi::@return main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_plot dominated by bitmap_line mode_stdbitmap @begin bitmap_plot @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_plot::@return dominated by bitmap_line mode_stdbitmap @begin bitmap_plot bitmap_plot::@return @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_ydxi dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_ydxi::@1 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_ydxi::@5 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_ydxi::@3 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@3 bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_ydxi::@2 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_ydxi::@return dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line_ydxi::@return menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_xdyd dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_xdyd::@1 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_xdyd::@5 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_xdyd::@3 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_xdyd::@2 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_xdyd::@return dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_line_xdyd::@return menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_ydxd dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_ydxd::@1 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_ydxd::@5 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_ydxd::@3 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_ydxd::@2 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_line_ydxd::@return dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line_ydxd::@return menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_clear dominated by bitmap_clear mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_clear::@1 dominated by bitmap_clear mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_clear::@1 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_clear::@2 dominated by bitmap_clear mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_clear::@1 bitmap_clear::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_clear::@3 dominated by bitmap_clear mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 bitmap_clear::@3 main::@2 bitmap_clear::@1 bitmap_clear::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_clear::@return dominated by bitmap_clear mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 bitmap_clear::@3 main::@2 bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@return menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 -bitmap_init dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 -bitmap_init::@1 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 -bitmap_init::@2 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 -bitmap_init::@3 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 -bitmap_init::@7 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@7 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 -bitmap_init::@4 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 -bitmap_init::@return dominated by bitmap_init::@return mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 -bitmap_init::@10 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 bitmap_init::@10 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 -mode_mcchar dominated by @begin @45 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 -mode_mcchar::@1 dominated by @begin @45 mode_mcchar::@1 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 -mode_mcchar::@4 dominated by @begin @45 mode_mcchar::@1 mode_mcchar::@4 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 -mode_mcchar::@2 dominated by @begin mode_mcchar::@2 @45 mode_mcchar::@1 mode_mcchar::@4 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 -mode_mcchar::@3 dominated by @begin mode_mcchar::@2 @45 mode_mcchar::@3 mode_mcchar::@1 mode_mcchar::@4 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 -mode_mcchar::@5 dominated by @begin mode_mcchar::@2 @45 mode_mcchar::@3 mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@5 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 -mode_mcchar::@6 dominated by @begin mode_mcchar::@2 @45 mode_mcchar::@3 mode_mcchar::@1 mode_mcchar::@6 mode_mcchar::@4 mode_mcchar::@5 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 -mode_mcchar::@return dominated by mode_mcchar::@return @begin mode_mcchar::@2 @45 mode_mcchar::@3 mode_mcchar::@1 mode_mcchar::@6 mode_mcchar::@4 mode_mcchar::@5 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 -mode_ecmchar dominated by @begin @45 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 -mode_ecmchar::@1 dominated by @begin mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 -mode_ecmchar::@4 dominated by @begin mode_ecmchar::@4 mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 -mode_ecmchar::@2 dominated by @begin mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 -mode_ecmchar::@3 dominated by @begin mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 -mode_ecmchar::@5 dominated by @begin mode_ecmchar::@5 mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 -mode_ecmchar::@6 dominated by @begin mode_ecmchar::@6 mode_ecmchar::@5 mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 -mode_ecmchar::@return dominated by mode_ecmchar::@return @begin mode_ecmchar::@6 mode_ecmchar::@5 mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 -mode_stdchar dominated by mode_stdchar @begin @45 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 -mode_stdchar::@1 dominated by mode_stdchar @begin @45 mode_stdchar::@1 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 -mode_stdchar::@4 dominated by mode_stdchar @begin @45 mode_stdchar::@1 mode_stdchar::@4 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 -mode_stdchar::@2 dominated by mode_stdchar @begin @45 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@4 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 -mode_stdchar::@3 dominated by mode_stdchar @begin @45 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@4 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 -mode_stdchar::@5 dominated by mode_stdchar @begin @45 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@5 mode_stdchar::@3 mode_stdchar::@4 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 -mode_stdchar::@6 dominated by mode_stdchar @begin @45 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@3 mode_stdchar::@4 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 -mode_stdchar::@return dominated by mode_stdchar @begin @45 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@3 mode_stdchar::@4 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 mode_stdchar::@return menu::@19 -print_str_lines dominated by @begin @45 menu::@1 menu::@2 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 -print_str_lines::@1 dominated by @begin @45 menu::@1 menu::@2 print_str_lines::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 -print_str_lines::@return dominated by @begin print_str_lines::@return @45 menu::@1 menu::@2 print_str_lines::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 -print_str_lines::@4 dominated by @begin @45 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 -print_str_lines::@8 dominated by @begin @45 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@8 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 -print_str_lines::@5 dominated by @begin @45 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 -print_str_lines::@9 dominated by @begin @45 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 -print_ln dominated by print_ln @begin @45 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 -print_ln::@1 dominated by print_ln print_ln::@1 @begin @45 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 -print_ln::@return dominated by print_ln::@return print_ln print_ln::@1 @begin @45 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 -print_cls dominated by print_cls @begin @45 menu::@1 menu::@2 main::@2 menu::@47 menu main menu::@19 -print_cls::@1 dominated by print_cls @begin @45 menu::@1 menu::@2 print_cls::@1 main::@2 menu::@47 menu main menu::@19 -print_cls::@return dominated by print_cls @begin @45 menu::@1 menu::@2 print_cls::@1 main::@2 menu::@47 menu main print_cls::@return menu::@19 -print_set_screen dominated by @begin @45 menu::@1 menu::@2 main::@2 print_set_screen menu main menu::@19 -print_set_screen::@return dominated by @begin @45 menu::@1 menu::@2 main::@2 print_set_screen menu main menu::@19 print_set_screen::@return +@48 dominated by @begin @48 +@end dominated by @end @begin @48 +main dominated by @begin @48 main +main::@2 dominated by @begin @48 main::@2 main +menu dominated by @begin @48 main::@2 menu main +menu::@1 dominated by @begin @48 menu::@1 main::@2 menu main +menu::@2 dominated by @begin @48 menu::@1 menu::@2 main::@2 menu main +menu::@19 dominated by @begin @48 menu::@1 menu::@2 main::@2 menu main menu::@19 +menu::@47 dominated by @begin @48 menu::@1 menu::@2 main::@2 menu::@47 menu main menu::@19 +menu::@48 dominated by @begin @48 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu main menu::@19 +menu::@4 dominated by @begin @48 menu::@4 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu main menu::@19 +menu::@50 dominated by @begin @48 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19 +menu::@22 dominated by @begin @48 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 +menu::@return dominated by @begin menu::@return @48 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19 +menu::@6 dominated by @begin @48 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19 +menu::@51 dominated by @begin @48 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19 +menu::@24 dominated by @begin @48 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 +menu::@7 dominated by @begin @48 menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19 +menu::@53 dominated by @begin @48 menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19 +menu::@26 dominated by @begin @48 menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 +menu::@8 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19 +menu::@55 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@19 +menu::@28 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19 +menu::@9 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@19 +menu::@57 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 main menu::@19 +menu::@30 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 +menu::@10 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 main menu::@19 menu::@10 +menu::@59 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@10 +menu::@32 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 +menu::@11 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@11 menu::@10 +menu::@61 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@11 menu::@10 +menu::@34 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@34 menu::@19 menu::@11 menu::@10 +menu::@12 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@12 menu::@11 menu::@10 +menu::@63 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@12 menu::@11 menu::@10 +menu::@36 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +menu::@13 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +menu::@65 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +menu::@38 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +menu::@14 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +menu::@67 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +menu::@40 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@40 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +menu::@15 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +menu::@69 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +menu::@42 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +menu::@16 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +menu::@71 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +menu::@44 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_8bppchunkybmm dominated by mode_8bppchunkybmm @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_8bppchunkybmm::@1 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_8bppchunkybmm::@5 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_8bppchunkybmm::@2 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_8bppchunkybmm::@3 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_8bppchunkybmm::@6 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_8bppchunkybmm::@10 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_8bppchunkybmm::@4 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_8bppchunkybmm::@7 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_8bppchunkybmm::@8 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_8bppchunkybmm::@11 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_8bppchunkybmm::@return dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 mode_8bppchunkybmm::@return menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_ctrl dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19 +mode_ctrl::@1 dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu main mode_ctrl::@1 menu::@19 +mode_ctrl::@4 dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu main mode_ctrl::@1 mode_ctrl::@4 menu::@19 +mode_ctrl::@6 dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 menu::@19 +mode_ctrl::@32 dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 menu::@19 +mode_ctrl::@return dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@return mode_ctrl::@32 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 menu::@19 +mode_ctrl::@7 dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@7 menu::@19 +mode_ctrl::@33 dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@7 menu::@19 +mode_ctrl::@23 dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 main mode_ctrl::@23 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@7 menu::@19 +mode_ctrl::@8 dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 menu::@19 +mode_ctrl::@34 dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 menu::@19 +mode_ctrl::@24 dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 main mode_ctrl::@24 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 menu::@19 +mode_ctrl::@9 dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@35 dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@25 dominated by @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@25 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@10 dominated by mode_ctrl::@10 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@36 dominated by mode_ctrl::@10 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@26 dominated by mode_ctrl::@10 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@26 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@11 dominated by mode_ctrl::@10 mode_ctrl::@11 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@37 dominated by mode_ctrl::@10 mode_ctrl::@11 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@27 dominated by mode_ctrl::@10 mode_ctrl::@11 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@27 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@12 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@38 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@28 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@28 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@13 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@39 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@14 dominated by mode_ctrl::@14 mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@30 dominated by mode_ctrl::@14 mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@30 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19 +mode_ctrl::@46 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @48 menu::@4 menu::@1 menu::@2 mode_ctrl main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 mode_ctrl::@46 menu::@19 +keyboard_key_pressed dominated by @begin @48 menu::@4 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main menu::@19 +keyboard_key_pressed::@2 dominated by keyboard_key_pressed::@2 @begin @48 menu::@4 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main menu::@19 +keyboard_key_pressed::@return dominated by keyboard_key_pressed::@return keyboard_key_pressed::@2 @begin @48 menu::@4 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main menu::@19 +keyboard_matrix_read dominated by @begin @48 menu::@4 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main keyboard_matrix_read menu::@19 +keyboard_matrix_read::@return dominated by @begin @48 menu::@4 menu::@1 menu::@2 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main keyboard_matrix_read keyboard_matrix_read::@return menu::@19 +dtvSetCpuBankSegment1 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 dtvSetCpuBankSegment1 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +dtvSetCpuBankSegment1::@return dominated by mode_8bppchunkybmm dtvSetCpuBankSegment1::@return mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 dtvSetCpuBankSegment1 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14 +mode_8bpppixelcell dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@1 dominated by mode_8bpppixelcell::@1 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@2 dominated by mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@3 dominated by mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@9 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@10 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@4 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@5 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@6 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@11 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@11 mode_8bpppixelcell::@10 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@7 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@12 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@13 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@13 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@14 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_8bpppixelcell::@return dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 mode_8bpppixelcell::@return menu::@9 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14 +mode_sixsfred dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_sixsfred::@1 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 menu menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_sixsfred::@8 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 menu mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_sixsfred::@2 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@2 menu mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_sixsfred::@3 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_sixsfred::@9 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_sixsfred::@4 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@4 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_sixsfred::@5 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_sixsfred::@11 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_sixsfred::@6 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_sixsfred::@7 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_sixsfred::@13 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 mode_sixsfred::@13 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_sixsfred::@14 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 mode_sixsfred::@14 mode_sixsfred::@13 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_sixsfred::@return dominated by mode_sixsfred::@return @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 mode_sixsfred::@14 mode_sixsfred::@13 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14 +mode_twoplanebitmap dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@1 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@10 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@2 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@3 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@11 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@4 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@5 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@13 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@13 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@7 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@15 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@8 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@9 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@17 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@17 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@18 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@18 mode_twoplanebitmap::@17 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@return dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 mode_twoplanebitmap::@return main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@18 mode_twoplanebitmap::@17 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_twoplanebitmap::@6 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@6 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 +mode_sixsfred2 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +mode_sixsfred2::@1 dominated by @begin @48 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +mode_sixsfred2::@8 dominated by @begin @48 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@4 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +mode_sixsfred2::@2 dominated by @begin @48 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +mode_sixsfred2::@3 dominated by @begin @48 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +mode_sixsfred2::@9 dominated by @begin @48 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +mode_sixsfred2::@4 dominated by @begin @48 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +mode_sixsfred2::@5 dominated by @begin @48 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +mode_sixsfred2::@11 dominated by @begin @48 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +mode_sixsfred2::@6 dominated by @begin @48 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +mode_sixsfred2::@7 dominated by @begin @48 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +mode_sixsfred2::@13 dominated by @begin @48 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 mode_sixsfred2::@13 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +mode_sixsfred2::@14 dominated by @begin @48 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 mode_sixsfred2::@13 mode_sixsfred2::@14 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10 +mode_sixsfred2::@return dominated by @begin @48 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 mode_sixsfred2::@13 mode_sixsfred2::@14 menu::@36 mode_sixsfred2::@return menu::@19 menu::@12 menu::@11 menu::@10 +mode_hicolmcchar dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 menu::@19 menu::@11 menu::@10 +mode_hicolmcchar::@1 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10 +mode_hicolmcchar::@4 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10 +mode_hicolmcchar::@2 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10 +mode_hicolmcchar::@3 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10 +mode_hicolmcchar::@5 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 mode_hicolmcchar::@5 menu::@19 menu::@11 menu::@10 +mode_hicolmcchar::@6 dominated by @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 mode_hicolmcchar::@6 mode_hicolmcchar::@5 menu::@19 menu::@11 menu::@10 +mode_hicolmcchar::@return dominated by mode_hicolmcchar::@return @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 mode_hicolmcchar::@6 mode_hicolmcchar::@5 menu::@19 menu::@11 menu::@10 +mode_hicolecmchar dominated by @begin mode_hicolecmchar @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 +mode_hicolecmchar::@1 dominated by @begin mode_hicolecmchar @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 +mode_hicolecmchar::@4 dominated by @begin mode_hicolecmchar @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 +mode_hicolecmchar::@2 dominated by @begin mode_hicolecmchar @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 +mode_hicolecmchar::@3 dominated by @begin mode_hicolecmchar @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 +mode_hicolecmchar::@5 dominated by @begin mode_hicolecmchar @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@5 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10 +mode_hicolecmchar::@6 dominated by @begin mode_hicolecmchar @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@5 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 mode_hicolecmchar::@6 menu::@59 main menu::@32 menu::@19 menu::@10 +mode_hicolecmchar::@return dominated by @begin mode_hicolecmchar @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@5 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 mode_hicolecmchar::@6 menu::@59 main mode_hicolecmchar::@return menu::@32 menu::@19 menu::@10 +mode_hicolstdchar dominated by @begin @48 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 +mode_hicolstdchar::@1 dominated by @begin @48 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@1 +mode_hicolstdchar::@4 dominated by @begin @48 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@4 mode_hicolstdchar::@1 +mode_hicolstdchar::@2 dominated by @begin @48 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@4 mode_hicolstdchar::@1 +mode_hicolstdchar::@3 dominated by @begin @48 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@1 +mode_hicolstdchar::@5 dominated by @begin @48 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@5 mode_hicolstdchar::@1 +mode_hicolstdchar::@6 dominated by @begin @48 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main mode_hicolstdchar::@6 menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@5 mode_hicolstdchar::@1 +mode_hicolstdchar::@return dominated by @begin @48 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 menu::@9 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 mode_hicolstdchar::@return menu menu::@57 menu::@55 menu::@30 main mode_hicolstdchar::@6 menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@5 mode_hicolstdchar::@1 +mode_stdbitmap dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19 +mode_stdbitmap::@1 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19 mode_stdbitmap::@1 +mode_stdbitmap::@5 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@1 +mode_stdbitmap::@2 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@1 +mode_stdbitmap::@3 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@1 +mode_stdbitmap::@6 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@1 +mode_stdbitmap::@7 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 +mode_stdbitmap::@9 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +mode_stdbitmap::@4 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +mode_stdbitmap::@11 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@11 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +mode_stdbitmap::@8 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@11 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@8 mode_stdbitmap::@9 mode_stdbitmap::@1 +mode_stdbitmap::@return dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@11 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@return mode_stdbitmap::@7 mode_stdbitmap::@8 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@15 dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@16 dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@16 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@17 dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@17 bitmap_line::@16 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@return dominated by bitmap_line::@return bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@3 dominated by bitmap_line mode_stdbitmap @begin @48 bitmap_line::@3 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@16 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@2 dominated by bitmap_line mode_stdbitmap @begin @48 bitmap_line::@2 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@20 dominated by bitmap_line mode_stdbitmap @begin @48 bitmap_line::@2 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@15 bitmap_line::@20 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@6 dominated by bitmap_line mode_stdbitmap @begin @48 bitmap_line::@2 bitmap_line::@6 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@1 dominated by bitmap_line mode_stdbitmap @begin @48 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@23 dominated by bitmap_line mode_stdbitmap @begin @48 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@23 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@24 dominated by bitmap_line mode_stdbitmap @begin @48 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line::@24 bitmap_line::@23 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@10 dominated by bitmap_line mode_stdbitmap @begin @48 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 bitmap_line::@10 main::@2 bitmap_line::@23 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@9 dominated by bitmap_line mode_stdbitmap @begin @48 bitmap_line::@1 bitmap_line::@9 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@27 dominated by bitmap_line mode_stdbitmap @begin @48 bitmap_line::@1 bitmap_line::@9 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_line::@27 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line::@13 dominated by bitmap_line mode_stdbitmap @begin @48 bitmap_line::@1 bitmap_line::@9 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 bitmap_line::@13 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_xdyi dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_xdyi::@1 dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@1 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_xdyi::@5 dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_xdyi::@3 dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@1 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_xdyi::@2 dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_xdyi::@return dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 bitmap_line_xdyi::@return main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_plot dominated by bitmap_line mode_stdbitmap @begin bitmap_plot @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_plot::@return dominated by bitmap_line mode_stdbitmap @begin bitmap_plot bitmap_plot::@return @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_ydxi dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_ydxi::@1 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_ydxi::@5 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_ydxi::@3 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@3 bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_ydxi::@2 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_ydxi::@return dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line_ydxi::@return menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_xdyd dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_xdyd::@1 dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_xdyd::@5 dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_xdyd::@3 dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_xdyd::@2 dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_xdyd::@return dominated by bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_line_xdyd::@return menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_ydxd dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_ydxd::@1 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_ydxd::@5 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_ydxd::@3 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_ydxd::@2 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_line_ydxd::@return dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_line_ydxd::@return menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_clear dominated by bitmap_clear mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_clear::@1 dominated by bitmap_clear mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_clear::@1 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_clear::@2 dominated by bitmap_clear mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 bitmap_clear::@1 bitmap_clear::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_clear::@3 dominated by bitmap_clear mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 bitmap_clear::@3 main::@2 bitmap_clear::@1 bitmap_clear::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_clear::@return dominated by bitmap_clear mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 bitmap_clear::@3 main::@2 bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@return menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1 +bitmap_init dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 +bitmap_init::@1 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 +bitmap_init::@2 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 +bitmap_init::@3 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 +bitmap_init::@7 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@7 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 +bitmap_init::@4 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 +bitmap_init::@return dominated by bitmap_init::@return mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 +bitmap_init::@10 dominated by mode_stdbitmap @begin @48 menu::@7 menu::@8 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 bitmap_init::@10 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1 +mode_mcchar dominated by @begin @48 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 +mode_mcchar::@1 dominated by @begin mode_mcchar::@1 @48 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 +mode_mcchar::@4 dominated by @begin mode_mcchar::@1 @48 mode_mcchar::@4 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 +mode_mcchar::@2 dominated by @begin mode_mcchar::@2 mode_mcchar::@1 @48 mode_mcchar::@4 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 +mode_mcchar::@3 dominated by @begin mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@1 @48 mode_mcchar::@4 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 +mode_mcchar::@5 dominated by @begin mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@1 @48 mode_mcchar::@4 mode_mcchar::@5 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 +mode_mcchar::@6 dominated by @begin mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@1 @48 mode_mcchar::@6 mode_mcchar::@4 mode_mcchar::@5 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 +mode_mcchar::@return dominated by mode_mcchar::@return @begin mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@1 @48 mode_mcchar::@6 mode_mcchar::@4 mode_mcchar::@5 mode_mcchar menu::@7 menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19 +mode_ecmchar dominated by @begin @48 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 +mode_ecmchar::@1 dominated by @begin mode_ecmchar::@1 @48 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 +mode_ecmchar::@4 dominated by @begin mode_ecmchar::@4 mode_ecmchar::@1 @48 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 +mode_ecmchar::@2 dominated by @begin mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@1 @48 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 +mode_ecmchar::@3 dominated by @begin mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @48 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 +mode_ecmchar::@5 dominated by @begin mode_ecmchar::@5 mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @48 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 +mode_ecmchar::@6 dominated by @begin mode_ecmchar::@6 mode_ecmchar::@5 mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @48 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 +mode_ecmchar::@return dominated by mode_ecmchar::@return @begin mode_ecmchar::@6 mode_ecmchar::@5 mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @48 mode_ecmchar menu::@6 menu::@4 menu::@1 menu::@2 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19 +mode_stdchar dominated by mode_stdchar @begin @48 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 +mode_stdchar::@1 dominated by mode_stdchar @begin @48 mode_stdchar::@1 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 +mode_stdchar::@4 dominated by mode_stdchar @begin @48 mode_stdchar::@1 mode_stdchar::@4 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 +mode_stdchar::@2 dominated by mode_stdchar @begin @48 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@4 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 +mode_stdchar::@3 dominated by mode_stdchar @begin @48 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@4 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 +mode_stdchar::@5 dominated by mode_stdchar @begin @48 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@5 mode_stdchar::@3 mode_stdchar::@4 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 +mode_stdchar::@6 dominated by mode_stdchar @begin @48 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@3 mode_stdchar::@4 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19 +mode_stdchar::@return dominated by mode_stdchar @begin @48 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@3 mode_stdchar::@4 menu::@4 menu::@1 menu::@2 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 mode_stdchar::@return menu::@19 +print_str_lines dominated by @begin @48 menu::@1 menu::@2 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 +print_str_lines::@1 dominated by @begin @48 menu::@1 menu::@2 print_str_lines::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 +print_str_lines::@return dominated by @begin print_str_lines::@return @48 menu::@1 menu::@2 print_str_lines::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 +print_str_lines::@4 dominated by @begin @48 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 +print_str_lines::@8 dominated by @begin @48 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@8 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 +print_str_lines::@5 dominated by @begin @48 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 +print_str_lines::@9 dominated by @begin @48 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 +print_ln dominated by print_ln @begin @48 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 +print_ln::@1 dominated by print_ln print_ln::@1 @begin @48 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 +print_ln::@return dominated by print_ln::@return print_ln print_ln::@1 @begin @48 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19 +print_cls dominated by print_cls @begin @48 menu::@1 menu::@2 main::@2 menu::@47 menu main menu::@19 +print_cls::@1 dominated by print_cls @begin @48 menu::@1 menu::@2 print_cls::@1 main::@2 menu::@47 menu main menu::@19 +print_cls::@return dominated by print_cls @begin @48 menu::@1 menu::@2 print_cls::@1 main::@2 menu::@47 menu main print_cls::@return menu::@19 +print_set_screen dominated by @begin @48 menu::@1 menu::@2 main::@2 print_set_screen menu main menu::@19 +print_set_screen::@return dominated by @begin @48 menu::@1 menu::@2 main::@2 print_set_screen menu main menu::@19 print_set_screen::@return NATURAL LOOPS Found back edge: Loop head: main::@2 tails: main::@2 blocks: null @@ -20160,15 +20264,15 @@ INITIAL ASM .label print_line_cursor = $9d //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @45 [phi:@begin->@45] -b45_from_bbegin: - jmp b45 -//SEG4 @45 -b45: +//SEG3 [1] phi from @begin to @48 [phi:@begin->@48] +b48_from_bbegin: + jmp b48 +//SEG4 @48 +b48: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @45 to @end [phi:@45->@end] -bend_from_b45: +//SEG6 [3] phi from @48 to @end [phi:@48->@end] +bend_from_b48: jmp bend //SEG7 @end bend: @@ -26696,15 +26800,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label print_line_cursor = $d //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @45 [phi:@begin->@45] -b45_from_bbegin: - jmp b45 -//SEG4 @45 -b45: +//SEG3 [1] phi from @begin to @48 [phi:@begin->@48] +b48_from_bbegin: + jmp b48 +//SEG4 @48 +b48: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @45 to @end [phi:@45->@end] -bend_from_b45: +//SEG6 [3] phi from @48 to @end [phi:@48->@end] +bend_from_b48: jmp bend //SEG7 @end bend: @@ -31157,7 +31261,7 @@ print_set_screen: { MENU_TEXT: .text "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"+"e. Chunky 8bpp Bitmap (D) 1111011@"+"----------------------------------------@"+" (V) vicII (H) vicII+hicol (D) c64dtv@"+"@" ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b45 +Removing instruction jmp b48 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b1 @@ -31543,8 +31647,8 @@ Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b45_from_bbegin: -Removing instruction bend_from_b45: +Removing instruction b48_from_bbegin: +Removing instruction bend_from_b48: Removing instruction b2_from_main: Removing instruction b2_from_b2: Removing instruction b1_from_b1: @@ -31753,7 +31857,7 @@ Removing instruction b1_from_print_ln: Removing instruction b1_from_b1: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b45: +Removing instruction b48: Removing instruction bend: Removing instruction b1_from_menu: Removing instruction b2_from_b1: @@ -32043,7 +32147,7 @@ Succesful ASM optimization Pass5UnreachableCodeElimination Fixing long branch [227] beq b4 to bne FINAL SYMBOL TABLE -(label) @45 +(label) @48 (label) @begin (label) @end (byte*) BGCOL @@ -33469,11 +33573,11 @@ Score: 2295866 .label dtv_control = 4 .label print_line_cursor = $d //SEG2 @begin -//SEG3 [1] phi from @begin to @45 [phi:@begin->@45] -//SEG4 @45 +//SEG3 [1] phi from @begin to @48 [phi:@begin->@48] +//SEG4 @48 //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @45 to @end [phi:@45->@end] +//SEG6 [3] phi from @48 to @end [phi:@48->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.sym b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.sym index 101fde9d0..2323e7652 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.sym @@ -1,4 +1,4 @@ -(label) @45 +(label) @48 (label) @begin (label) @end (byte*) BGCOL diff --git a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.cfg b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.cfg index 3a9f66669..942921288 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@15 -@15: scope:[] from @begin + to:@18 +@18: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @15 +@end: scope:[] from @18 [3] phi() [ ] ( ) -main: scope:[main] from @15 +main: scope:[main] from @18 [4] phi() [ ] ( main:2 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.log b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.log index fb53c3f85..7e82ddc3b 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.log @@ -189,6 +189,24 @@ const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + Importing multiply.kc PARSING src/test/java/dk/camelot64/kickc/test/kc/multiply.kc // Simple binary multiplication implementation @@ -510,6 +528,9 @@ SYMBOLS (label) @13 (label) @14 (label) @15 +(label) @16 +(label) @17 +(label) @18 (label) @2 (label) @3 (label) @4 @@ -1003,6 +1024,34 @@ SYMBOLS (label) print_str_at::@return (byte*) print_str_at::at (byte*) print_str_at::str +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx Fixing lo/hi-lvalue with new tmpVar mul8s::$16 mul8s::$16 ← mul8s::$8 Fixing lo/hi-lvalue with new tmpVar mul8s::$17 mul8s::$17 ← mul8s::$14 @@ -1116,6 +1165,51 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 + to:@4 mul8u: scope:[mul8u] from (word) mul8u::res ← (byte/signed byte/word/signed word/dword/signed dword) 0 (word) mul8u::mb ← ((word)) (byte) mul8u::b @@ -1155,8 +1249,8 @@ mul8u::@return: scope:[mul8u] from mul8u::@3 mul8u::@9 to:@return mul8u::@9: scope:[mul8u] from to:mul8u::@return -@1: scope:[] from @begin - to:@2 +@4: scope:[] from @3 + to:@5 mul8s: scope:[mul8s] from (byte~) mul8s::$0 ← ((byte)) (signed byte) mul8s::a (byte~) mul8s::$1 ← ((byte)) (signed byte) mul8s::b @@ -1197,8 +1291,8 @@ mul8s::@return: scope:[mul8s] from mul8s::@2 mul8s::@5 to:@return mul8s::@5: scope:[mul8s] from to:mul8s::@return -@2: scope:[] from @1 - to:@3 +@5: scope:[] from @4 + to:@6 mul8su: scope:[mul8su] from (byte~) mul8su::$0 ← ((byte)) (signed byte) mul8su::a (byte~) mul8su::$1 ← ((byte)) (byte) mul8su::b @@ -1226,8 +1320,8 @@ mul8su::@return: scope:[mul8su] from mul8su::@1 mul8su::@3 to:@return mul8su::@3: scope:[mul8su] from to:mul8su::@return -@3: scope:[] from @2 - to:@4 +@6: scope:[] from @5 + to:@7 mul16u: scope:[mul16u] from (dword) mul16u::res ← (byte/signed byte/word/signed word/dword/signed dword) 0 (dword) mul16u::mb ← ((dword)) (word) mul16u::b @@ -1267,8 +1361,8 @@ mul16u::@return: scope:[mul16u] from mul16u::@3 mul16u::@9 to:@return mul16u::@9: scope:[mul16u] from to:mul16u::@return -@4: scope:[] from @3 - to:@5 +@7: scope:[] from @6 + to:@8 mul16s: scope:[mul16s] from (word~) mul16s::$0 ← ((word)) (signed word) mul16s::a (word~) mul16s::$1 ← ((word)) (signed word) mul16s::b @@ -1309,7 +1403,7 @@ mul16s::@return: scope:[mul16s] from mul16s::@2 mul16s::@5 to:@return mul16s::@5: scope:[mul16s] from to:mul16s::@return -@5: scope:[] from @4 +@8: scope:[] from @7 (byte) KEY_DEL ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) KEY_RETURN ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) KEY_CRSR_RIGHT ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -1377,7 +1471,7 @@ mul16s::@5: scope:[mul16s] from (byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@6 + to:@9 keyboard_init: scope:[keyboard_init] from *((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255 *((byte*) CIA1_PORT_B_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1385,8 +1479,8 @@ keyboard_init: scope:[keyboard_init] from keyboard_init::@return: scope:[keyboard_init] from keyboard_init return to:@return -@6: scope:[] from @5 - to:@7 +@9: scope:[] from @8 + to:@10 keyboard_matrix_read: scope:[keyboard_matrix_read] from *((byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 ← ~ *((byte*) CIA1_PORT_B) @@ -1399,8 +1493,8 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri to:@return keyboard_matrix_read::@1: scope:[keyboard_matrix_read] from to:keyboard_matrix_read::@return -@7: scope:[] from @6 - to:@8 +@10: scope:[] from @9 + to:@11 keyboard_key_pressed: scope:[keyboard_key_pressed] from (byte~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key & (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) keyboard_key_pressed::colidx ← (byte~) keyboard_key_pressed::$0 @@ -1416,8 +1510,8 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p to:@return keyboard_key_pressed::@1: scope:[keyboard_key_pressed] from to:keyboard_key_pressed::@return -@8: scope:[] from @7 - to:@9 +@11: scope:[] from @10 + to:@12 keyboard_get_keycode: scope:[keyboard_get_keycode] from (byte) keyboard_get_keycode::return ← *((byte[]) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch) to:keyboard_get_keycode::@return @@ -1427,7 +1521,7 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k to:@return keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from to:keyboard_get_keycode::@return -@9: scope:[] from @8 +@12: scope:[] from @11 (byte[8]) keyboard_events ← { fill( 8, 0) } (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1438,7 +1532,7 @@ keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT (byte) KEY_MODIFIER_SHIFT ← (byte~) $0 (byte[8]) keyboard_scan_values ← { fill( 8, 0) } - to:@10 + to:@13 keyboard_event_scan: scope:[keyboard_event_scan] from (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1551,8 +1645,8 @@ keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan: keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@12 return to:@return -@10: scope:[] from @9 - to:@11 +@13: scope:[] from @12 + to:@14 keyboard_event_pressed: scope:[keyboard_event_pressed] from (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3 (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0) @@ -1566,8 +1660,8 @@ keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_e to:@return keyboard_event_pressed::@1: scope:[keyboard_event_pressed] from to:keyboard_event_pressed::@return -@11: scope:[] from @10 - to:@12 +@14: scope:[] from @13 + to:@15 keyboard_event_get: scope:[keyboard_event_get] from (bool~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) keyboard_event_get::$0) goto keyboard_event_get::@1 @@ -1591,9 +1685,9 @@ keyboard_event_get::@5: scope:[keyboard_event_get] from to:keyboard_event_get::@1 keyboard_event_get::@6: scope:[keyboard_event_get] from to:keyboard_event_get::@2 -@12: scope:[] from @11 +@15: scope:[] from @14 (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 - to:@13 + to:@16 main: scope:[main] from (byte*) main::sc ← (byte*) SCREEN to:main::@1 @@ -1713,8 +1807,8 @@ main::@24: scope:[main] from main::@23 main::@return: scope:[main] from main::@24 return to:@return -@13: scope:[] from @12 - to:@14 +@16: scope:[] from @15 + to:@17 print_str_at: scope:[print_str_at] from to:print_str_at::@1 print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2 @@ -1737,8 +1831,8 @@ print_str_at::@6: scope:[print_str_at] from print_str_at::@return: scope:[print_str_at] from print_str_at::@3 return to:@return -@14: scope:[] from @13 - to:@15 +@17: scope:[] from @16 + to:@18 plot_chargen: scope:[plot_chargen] from asm { sei } (word~) plot_chargen::$0 ← ((word)) (byte) plot_chargen::ch @@ -1799,11 +1893,15 @@ plot_chargen::@8: scope:[plot_chargen] from plot_chargen::@7 plot_chargen::@return: scope:[plot_chargen] from plot_chargen::@8 return to:@return -@15: scope:[] from @14 +@18: scope:[] from @17 call main to:@end -@end: scope:[] from @15 +@end: scope:[] from @18 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Removing unused procedure mul8s Removing unused procedure mul8su Removing unused procedure mul16s @@ -1902,31 +2000,34 @@ Creating constant string variable for inline (const string) main::str "f1@" Creating constant string variable for inline (const string) main::str1 "f3@" Creating constant string variable for inline (const string) main::str2 "f5@" Creating constant string variable for inline (const string) main::str3 "f7@" +Removing empty block @1 +Removing empty block @2 +Removing empty block @3 Removing empty block mul8u::@5 Removing empty block mul8u::@6 Removing empty block mul8u::@8 Removing empty block mul8u::@9 -Removing empty block @1 -Removing empty block @2 -Removing empty block @3 Removing empty block @4 +Removing empty block @5 Removing empty block @6 -Removing empty block keyboard_matrix_read::@1 Removing empty block @7 -Removing empty block keyboard_key_pressed::@1 -Removing empty block @8 -Removing empty block keyboard_get_keycode::@1 Removing empty block @9 +Removing empty block keyboard_matrix_read::@1 Removing empty block @10 +Removing empty block keyboard_key_pressed::@1 Removing empty block @11 +Removing empty block keyboard_get_keycode::@1 +Removing empty block @12 +Removing empty block @13 +Removing empty block @14 Removing empty block main::@20 Removing empty block main::@24 -Removing empty block @13 +Removing empty block @16 Removing empty block print_str_at::@4 Removing empty block print_str_at::@3 Removing empty block print_str_at::@5 Removing empty block print_str_at::@6 -Removing empty block @14 +Removing empty block @17 PROCEDURE MODIFY VARIABLE ANALYSIS Completing Phi functions... @@ -1955,7 +2056,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 - to:@5 + to:@8 mul8u: scope:[mul8u] from plot_chargen::@1 (byte) mul8u::a#5 ← phi( plot_chargen::@1/(byte) mul8u::a#1 ) (byte) mul8u::b#1 ← phi( plot_chargen::@1/(byte) mul8u::b#0 ) @@ -2003,7 +2104,7 @@ mul8u::@return: scope:[mul8u] from mul8u::@3 (word) mul8u::return#1 ← (word) mul8u::return#3 return to:@return -@5: scope:[] from @begin +@8: scope:[] from @begin (byte) KEY_F7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 (byte) KEY_F1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) KEY_F3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 @@ -2062,7 +2163,7 @@ mul8u::@return: scope:[mul8u] from mul8u::@3 (byte[]) keyboard_char_keycodes#0 ← { (byte) KEY_AT#0, (byte) KEY_A#0, (byte) KEY_B#0, (byte) KEY_C#0, (byte) KEY_D#0, (byte) KEY_E#0, (byte) KEY_F#0, (byte) KEY_G#0, (byte) KEY_H#0, (byte) KEY_I#0, (byte) KEY_J#0, (byte) KEY_K#0, (byte) KEY_L#0, (byte) KEY_M#0, (byte) KEY_N#0, (byte) KEY_O#0, (byte) KEY_P#0, (byte) KEY_Q#0, (byte) KEY_R#0, (byte) KEY_S#0, (byte) KEY_T#0, (byte) KEY_U#0, (byte) KEY_V#0, (byte) KEY_W#0, (byte) KEY_X#0, (byte) KEY_Y#0, (byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP#0, (byte) KEY_ARROW_LEFT#0, (byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK#0, (byte) KEY_PLUS#0, (byte) KEY_COMMA#0, (byte) KEY_MINUS#0, (byte) KEY_DOT#0, (byte) KEY_SLASH#0, (byte) KEY_0#0, (byte) KEY_1#0, (byte) KEY_2#0, (byte) KEY_3#0, (byte) KEY_4#0, (byte) KEY_5#0, (byte) KEY_6#0, (byte) KEY_7#0, (byte) KEY_8#0, (byte) KEY_9#0, (byte) KEY_COLON#0, (byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@12 + to:@15 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 ) *((byte*) CIA1_PORT_A#0) ← *((byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#1) @@ -2106,11 +2207,11 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k (byte) keyboard_get_keycode::return#1 ← (byte) keyboard_get_keycode::return#3 return to:@return -@12: scope:[] from @5 +@15: scope:[] from @8 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 - to:@15 -main: scope:[main] from @15 - (byte*) SCREEN#1 ← phi( @15/(byte*) SCREEN#8 ) + to:@18 +main: scope:[main] from @18 + (byte*) SCREEN#1 ← phi( @18/(byte*) SCREEN#8 ) (byte*) main::sc#0 ← (byte*) SCREEN#1 to:main::@1 main::@1: scope:[main] from main main::@1 @@ -2493,19 +2594,19 @@ plot_chargen::@8: scope:[plot_chargen] from plot_chargen::@7 plot_chargen::@return: scope:[plot_chargen] from plot_chargen::@8 return to:@return -@15: scope:[] from @12 - (byte*) SCREEN#8 ← phi( @12/(byte*) SCREEN#0 ) +@18: scope:[] from @15 + (byte*) SCREEN#8 ← phi( @15/(byte*) SCREEN#0 ) call main - to:@16 -@16: scope:[] from @15 + to:@19 +@19: scope:[] from @18 to:@end -@end: scope:[] from @16 +@end: scope:[] from @19 SYMBOL TABLE SSA -(label) @12 (label) @15 -(label) @16 -(label) @5 +(label) @18 +(label) @19 +(label) @8 (label) @begin (label) @end (byte*) CHARGEN @@ -3033,7 +3134,7 @@ SYMBOL TABLE SSA (byte*) print_str_at::str#7 OPTIMIZING CONTROL FLOW GRAPH -Culled Empty Block (label) @16 +Culled Empty Block (label) @19 Succesful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) main::$17 ← (byte~) main::$15 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$16 ← (byte~) main::$15 != (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -3418,8 +3519,8 @@ Succesful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Succesful SSA optimization Pass2EliminateUnusedBlocks Culled Empty Block (label) mul8u::@3 -Culled Empty Block (label) @5 -Culled Empty Block (label) @12 +Culled Empty Block (label) @8 +Culled Empty Block (label) @15 Culled Empty Block (label) main::@28 Culled Empty Block (label) main::@14 Not culling empty block because it shares successor with its predecessor. (label) main::@15 @@ -3674,7 +3775,7 @@ Constant inlined main::$7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed Constant inlined main::pressed#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined plot_chargen::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @15 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@15 main::@4 main::@31 main::@16 main::@5 main::@32 main::@17 main::@6 main::@33 main::@18 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2 +Block Sequence Planned @begin @18 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@15 main::@4 main::@31 main::@16 main::@5 main::@32 main::@17 main::@6 main::@33 main::@18 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2 Added new block during phi lifting main::@38(between main::@1 and main::@1) Added new block during phi lifting main::@39(between main::@29 and main::@2) Added new block during phi lifting main::@40(between main::@12 and main::@3) @@ -3687,9 +3788,9 @@ Added new block during phi lifting plot_chargen::@10(between plot_chargen and pl Added new block during phi lifting plot_chargen::@11(between plot_chargen::@7 and plot_chargen::@2) Added new block during phi lifting plot_chargen::@12(between plot_chargen::@4 and plot_chargen::@3) Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4) -Block Sequence Planned @begin @15 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@15 main::@4 main::@31 main::@16 main::@5 main::@32 main::@17 main::@6 main::@33 main::@18 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 main::@40 main::@45 main::@44 main::@43 main::@42 main::@41 main::@39 main::@38 plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return plot_chargen::@11 plot_chargen::@12 plot_chargen::@10 mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 mul8u::@10 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2 +Block Sequence Planned @begin @18 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@15 main::@4 main::@31 main::@16 main::@5 main::@32 main::@17 main::@6 main::@33 main::@18 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 main::@40 main::@45 main::@44 main::@43 main::@42 main::@41 main::@39 main::@38 plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return plot_chargen::@11 plot_chargen::@12 plot_chargen::@10 mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 mul8u::@10 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @15 +Adding NOP phi() at start of @18 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@13 @@ -3780,9 +3881,9 @@ Culled Empty Block (label) plot_chargen::@11 Culled Empty Block (label) plot_chargen::@12 Culled Empty Block (label) plot_chargen::@10 Culled Empty Block (label) mul8u::@10 -Block Sequence Planned @begin @15 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@4 main::@31 main::@5 main::@32 main::@6 main::@33 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 main::@44 main::@43 main::@42 main::@41 plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2 +Block Sequence Planned @begin @18 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@4 main::@31 main::@5 main::@32 main::@6 main::@33 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 main::@44 main::@43 main::@42 main::@41 plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @15 +Adding NOP phi() at start of @18 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@13 @@ -3815,14 +3916,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@15 -@15: scope:[] from @begin + to:@18 +@18: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @15 +@end: scope:[] from @18 [3] phi() [ ] ( ) -main: scope:[main] from @15 +main: scope:[main] from @18 [4] phi() [ ] ( main:2 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 @@ -4082,67 +4183,67 @@ print_str_at::@2: scope:[print_str_at] from print_str_at::@1 DOMINATORS @begin dominated by @begin -@15 dominated by @begin @15 -@end dominated by @end @begin @15 -main dominated by main @begin @15 -main::@1 dominated by main main::@1 @begin @15 -main::@13 dominated by main main::@1 @begin @15 main::@13 -main::@25 dominated by main main::@1 @begin main::@25 @15 main::@13 -main::@26 dominated by main main::@1 @begin main::@26 main::@25 @15 main::@13 -main::@27 dominated by main main::@1 @begin main::@27 main::@26 main::@25 @15 main::@13 -main::@2 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @15 main::@13 -main::@29 dominated by main main::@1 main::@2 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@3 dominated by main main::@1 main::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@30 dominated by main main::@1 main::@2 main::@3 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@4 dominated by main main::@1 main::@2 main::@3 main::@4 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@31 dominated by main main::@1 main::@2 main::@3 main::@4 main::@31 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@5 dominated by main main::@1 main::@2 main::@5 main::@3 main::@4 main::@31 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@32 dominated by main main::@1 main::@2 main::@5 main::@3 main::@4 main::@31 main::@30 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@6 dominated by main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@33 dominated by main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@7 dominated by main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@34 dominated by main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@19 dominated by main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @15 main::@19 main::@13 -main::@9 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@10 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 main::@10 @15 main::@13 -main::@35 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@26 main::@25 main::@10 @15 main::@13 -main::@21 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@21 main::@27 main::@29 main::@26 main::@25 main::@10 @15 main::@13 -main::@36 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@36 main::@21 main::@27 main::@29 main::@26 main::@25 main::@10 @15 main::@13 -main::@11 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@26 main::@25 main::@11 main::@10 @15 main::@13 -main::@22 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@22 main::@27 main::@29 main::@26 main::@25 main::@11 main::@10 @15 main::@13 -main::@12 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@26 main::@25 main::@11 main::@10 @15 main::@13 main::@12 -main::@44 dominated by main::@44 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@43 dominated by main::@43 main main::@1 main::@2 main::@5 main::@3 main::@4 main::@31 main::@30 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@42 dominated by main::@42 main main::@1 main::@2 main::@3 main::@4 main::@31 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13 -main::@41 dominated by main::@41 main main::@1 main::@2 main::@3 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13 -plot_chargen dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @15 main::@13 plot_chargen -plot_chargen::@5 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @15 plot_chargen::@5 main::@13 plot_chargen -plot_chargen::@1 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @15 main::@13 plot_chargen plot_chargen::@1 -plot_chargen::@9 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @15 main::@13 plot_chargen plot_chargen::@1 -plot_chargen::@2 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @15 main::@13 plot_chargen plot_chargen::@2 plot_chargen::@1 -plot_chargen::@3 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @15 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1 -plot_chargen::@6 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @15 plot_chargen::@6 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1 -plot_chargen::@4 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @15 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1 -plot_chargen::@7 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @15 plot_chargen::@7 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1 -plot_chargen::@8 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 plot_chargen::@8 @15 plot_chargen::@7 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1 -plot_chargen::@return dominated by main main::@1 main::@2 plot_chargen::@return @begin main::@27 main::@26 main::@25 plot_chargen::@9 plot_chargen::@8 @15 plot_chargen::@7 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1 -mul8u dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @15 main::@13 plot_chargen plot_chargen::@1 -mul8u::@1 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @15 main::@13 plot_chargen plot_chargen::@1 mul8u::@1 -mul8u::@return dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @15 main::@13 mul8u::@return plot_chargen plot_chargen::@1 mul8u::@1 -mul8u::@2 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @15 main::@13 plot_chargen plot_chargen::@1 mul8u::@2 mul8u::@1 -mul8u::@7 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @15 main::@13 mul8u::@7 plot_chargen plot_chargen::@1 mul8u::@2 mul8u::@1 -mul8u::@4 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @15 main::@13 plot_chargen plot_chargen::@1 mul8u::@2 mul8u::@1 mul8u::@4 -keyboard_key_pressed dominated by main main::@1 main::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13 keyboard_key_pressed -keyboard_key_pressed::@2 dominated by main main::@1 main::@2 keyboard_key_pressed::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13 keyboard_key_pressed -keyboard_key_pressed::@return dominated by main main::@1 main::@2 keyboard_key_pressed::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 keyboard_key_pressed::@return @15 main::@13 keyboard_key_pressed -keyboard_matrix_read dominated by main main::@1 main::@2 main::@3 @begin keyboard_matrix_read main::@27 main::@29 main::@26 main::@25 @15 main::@13 keyboard_key_pressed -keyboard_matrix_read::@return dominated by main main::@1 main::@2 main::@3 @begin keyboard_matrix_read main::@27 main::@29 main::@26 main::@25 @15 main::@13 keyboard_matrix_read::@return keyboard_key_pressed -keyboard_get_keycode dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 keyboard_get_keycode main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 main::@10 @15 main::@13 -keyboard_get_keycode::@return dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 keyboard_get_keycode main::@31 main::@30 main::@33 @begin main::@32 main::@34 keyboard_get_keycode::@return main::@27 main::@29 main::@26 main::@25 main::@10 @15 main::@13 -print_str_at dominated by main main::@1 @begin print_str_at @15 main::@13 -print_str_at::@1 dominated by main main::@1 @begin print_str_at @15 print_str_at::@1 main::@13 -print_str_at::@return dominated by main main::@1 @begin print_str_at @15 print_str_at::@1 main::@13 print_str_at::@return -print_str_at::@2 dominated by main main::@1 @begin print_str_at @15 print_str_at::@1 print_str_at::@2 main::@13 +@18 dominated by @begin @18 +@end dominated by @end @begin @18 +main dominated by main @begin @18 +main::@1 dominated by main main::@1 @begin @18 +main::@13 dominated by main main::@1 @begin @18 main::@13 +main::@25 dominated by main main::@1 @begin main::@25 @18 main::@13 +main::@26 dominated by main main::@1 @begin main::@26 main::@25 @18 main::@13 +main::@27 dominated by main main::@1 @begin main::@27 main::@26 main::@25 @18 main::@13 +main::@2 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @18 main::@13 +main::@29 dominated by main main::@1 main::@2 @begin main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@3 dominated by main main::@1 main::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@30 dominated by main main::@1 main::@2 main::@3 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@4 dominated by main main::@1 main::@2 main::@3 main::@4 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@31 dominated by main main::@1 main::@2 main::@3 main::@4 main::@31 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@5 dominated by main main::@1 main::@2 main::@5 main::@3 main::@4 main::@31 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@32 dominated by main main::@1 main::@2 main::@5 main::@3 main::@4 main::@31 main::@30 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@6 dominated by main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@33 dominated by main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@7 dominated by main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@34 dominated by main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@19 dominated by main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @18 main::@19 main::@13 +main::@9 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@10 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 main::@10 @18 main::@13 +main::@35 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@26 main::@25 main::@10 @18 main::@13 +main::@21 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@21 main::@27 main::@29 main::@26 main::@25 main::@10 @18 main::@13 +main::@36 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@36 main::@21 main::@27 main::@29 main::@26 main::@25 main::@10 @18 main::@13 +main::@11 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@26 main::@25 main::@11 main::@10 @18 main::@13 +main::@22 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@22 main::@27 main::@29 main::@26 main::@25 main::@11 main::@10 @18 main::@13 +main::@12 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@26 main::@25 main::@11 main::@10 @18 main::@13 main::@12 +main::@44 dominated by main::@44 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@43 dominated by main::@43 main main::@1 main::@2 main::@5 main::@3 main::@4 main::@31 main::@30 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@42 dominated by main::@42 main main::@1 main::@2 main::@3 main::@4 main::@31 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @18 main::@13 +main::@41 dominated by main::@41 main main::@1 main::@2 main::@3 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @18 main::@13 +plot_chargen dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @18 main::@13 plot_chargen +plot_chargen::@5 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@5 @18 main::@13 plot_chargen +plot_chargen::@1 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @18 main::@13 plot_chargen plot_chargen::@1 +plot_chargen::@9 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @18 main::@13 plot_chargen plot_chargen::@1 +plot_chargen::@2 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @18 main::@13 plot_chargen plot_chargen::@2 plot_chargen::@1 +plot_chargen::@3 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @18 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1 +plot_chargen::@6 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 plot_chargen::@6 @18 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1 +plot_chargen::@4 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @18 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1 +plot_chargen::@7 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 plot_chargen::@7 @18 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1 +plot_chargen::@8 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 plot_chargen::@8 plot_chargen::@7 @18 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1 +plot_chargen::@return dominated by main main::@1 main::@2 plot_chargen::@return @begin main::@27 main::@26 main::@25 plot_chargen::@9 plot_chargen::@8 plot_chargen::@7 @18 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1 +mul8u dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @18 main::@13 plot_chargen plot_chargen::@1 +mul8u::@1 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @18 main::@13 plot_chargen plot_chargen::@1 mul8u::@1 +mul8u::@return dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @18 main::@13 mul8u::@return plot_chargen plot_chargen::@1 mul8u::@1 +mul8u::@2 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @18 main::@13 plot_chargen plot_chargen::@1 mul8u::@2 mul8u::@1 +mul8u::@7 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @18 main::@13 mul8u::@7 plot_chargen plot_chargen::@1 mul8u::@2 mul8u::@1 +mul8u::@4 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @18 main::@13 plot_chargen plot_chargen::@1 mul8u::@2 mul8u::@1 mul8u::@4 +keyboard_key_pressed dominated by main main::@1 main::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 @18 main::@13 keyboard_key_pressed +keyboard_key_pressed::@2 dominated by main main::@1 main::@2 keyboard_key_pressed::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 @18 main::@13 keyboard_key_pressed +keyboard_key_pressed::@return dominated by main main::@1 main::@2 keyboard_key_pressed::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 keyboard_key_pressed::@return @18 main::@13 keyboard_key_pressed +keyboard_matrix_read dominated by main main::@1 main::@2 main::@3 @begin keyboard_matrix_read main::@27 main::@29 main::@26 main::@25 @18 main::@13 keyboard_key_pressed +keyboard_matrix_read::@return dominated by main main::@1 main::@2 main::@3 @begin keyboard_matrix_read main::@27 main::@29 main::@26 main::@25 @18 main::@13 keyboard_matrix_read::@return keyboard_key_pressed +keyboard_get_keycode dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 keyboard_get_keycode main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 main::@10 @18 main::@13 +keyboard_get_keycode::@return dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 keyboard_get_keycode main::@31 main::@30 main::@33 @begin main::@32 main::@34 keyboard_get_keycode::@return main::@27 main::@29 main::@26 main::@25 main::@10 @18 main::@13 +print_str_at dominated by main main::@1 @begin print_str_at @18 main::@13 +print_str_at::@1 dominated by main main::@1 @begin print_str_at print_str_at::@1 @18 main::@13 +print_str_at::@return dominated by main main::@1 @begin print_str_at print_str_at::@1 @18 main::@13 print_str_at::@return +print_str_at::@2 dominated by main main::@1 @begin print_str_at print_str_at::@1 @18 print_str_at::@2 main::@13 NATURAL LOOPS Found back edge: Loop head: main::@1 tails: main::@1 blocks: null @@ -4600,17 +4701,17 @@ INITIAL ASM .label SCREEN = $400 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @15 [phi:@begin->@15] -b15_from_bbegin: - jmp b15 -//SEG4 @15 -b15: +//SEG3 [1] phi from @begin to @18 [phi:@begin->@18] +b18_from_bbegin: + jmp b18 +//SEG4 @18 +b18: //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @15 to main [phi:@15->main] -main_from_b15: +//SEG6 [4] phi from @18 to main [phi:@18->main] +main_from_b18: jsr main -//SEG7 [3] phi from @15 to @end [phi:@15->@end] -bend_from_b15: +//SEG7 [3] phi from @18 to @end [phi:@18->@end] +bend_from_b18: jmp bend //SEG8 @end bend: @@ -5727,17 +5828,17 @@ ASSEMBLER BEFORE OPTIMIZATION .label SCREEN = $400 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @15 [phi:@begin->@15] -b15_from_bbegin: - jmp b15 -//SEG4 @15 -b15: +//SEG3 [1] phi from @begin to @18 [phi:@begin->@18] +b18_from_bbegin: + jmp b18 +//SEG4 @18 +b18: //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @15 to main [phi:@15->main] -main_from_b15: +//SEG6 [4] phi from @18 to main [phi:@18->main] +main_from_b18: jsr main -//SEG7 [3] phi from @15 to @end [phi:@15->@end] -bend_from_b15: +//SEG7 [3] phi from @18 to @end [phi:@18->@end] +bend_from_b18: jmp bend //SEG8 @end bend: @@ -6502,7 +6603,7 @@ print_str_at: { keyboard_char_keycodes: .byte KEY_AT, KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, $3f, KEY_POUND, $3f, KEY_ARROW_UP, KEY_ARROW_LEFT, KEY_SPACE, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, KEY_ASTERISK, KEY_PLUS, KEY_COMMA, KEY_MINUS, KEY_DOT, KEY_SLASH, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_COLON, KEY_SEMICOLON, $3f, KEY_EQUALS, $3f, $3f ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b15 +Removing instruction jmp b18 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp b13 @@ -6572,9 +6673,9 @@ Replacing label b2_from_b7 with b2 Replacing label b4_from_b2 with b4 Replacing label b1_from_b2 with b1 Removing instruction bbegin: -Removing instruction b15_from_bbegin: -Removing instruction main_from_b15: -Removing instruction bend_from_b15: +Removing instruction b18_from_bbegin: +Removing instruction main_from_b18: +Removing instruction bend_from_b18: Removing instruction b1_from_b1: Removing instruction b13_from_b1: Removing instruction print_str_at_from_b13: @@ -6613,7 +6714,7 @@ Removing instruction b4_from_b7: Removing instruction b1_from_print_str_at: Removing instruction b1_from_b2: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b15: +Removing instruction b18: Removing instruction bend: Removing instruction b1_from_main: Removing instruction b13: @@ -6688,7 +6789,7 @@ Removing unreachable instruction jmp b4 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @15 +(label) @18 (label) @begin (label) @end (byte*) CHARGEN @@ -7106,12 +7207,12 @@ Score: 628899 .const KEY_Q = $3e .label SCREEN = $400 //SEG2 @begin -//SEG3 [1] phi from @begin to @15 [phi:@begin->@15] -//SEG4 @15 +//SEG3 [1] phi from @begin to @18 [phi:@begin->@18] +//SEG4 @18 //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @15 to main [phi:@15->main] +//SEG6 [4] phi from @18 to main [phi:@18->main] jsr main -//SEG7 [3] phi from @15 to @end [phi:@15->@end] +//SEG7 [3] phi from @18 to @end [phi:@18->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.sym b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.sym index 93cc0a927..d4e463ff5 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.sym @@ -1,4 +1,4 @@ -(label) @15 +(label) @18 (label) @begin (label) @end (byte*) CHARGEN diff --git a/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.cfg b/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.cfg index de10a438b..96c4f2a34 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@10 -@10: scope:[] from @begin + to:@13 +@13: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @10 +@end: scope:[] from @13 [3] phi() [ ] ( ) -main: scope:[main] from @10 +main: scope:[main] from @13 [4] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) to:main::@2 main::@2: scope:[main] from main main::@2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.log b/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.log index 699bd2366..d46d15e38 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.log @@ -381,6 +381,24 @@ const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size Adding pre/post-modifier (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode @@ -392,6 +410,9 @@ SYMBOLS (byte~) $0 (label) @1 (label) @10 +(label) @11 +(label) @12 +(label) @13 (label) @2 (label) @3 (label) @4 @@ -699,6 +720,34 @@ SYMBOLS (label) pressed::@8 (label) pressed::@9 (label) pressed::@return +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 @@ -804,6 +853,51 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 (byte) KEY_DEL ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) KEY_RETURN ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) KEY_CRSR_RIGHT ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -871,7 +965,7 @@ INITIAL CONTROL FLOW GRAPH (byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@1 + to:@4 keyboard_init: scope:[keyboard_init] from *((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255 *((byte*) CIA1_PORT_B_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -879,8 +973,8 @@ keyboard_init: scope:[keyboard_init] from keyboard_init::@return: scope:[keyboard_init] from keyboard_init return to:@return -@1: scope:[] from @begin - to:@2 +@4: scope:[] from @3 + to:@5 keyboard_matrix_read: scope:[keyboard_matrix_read] from *((byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 ← ~ *((byte*) CIA1_PORT_B) @@ -893,8 +987,8 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri to:@return keyboard_matrix_read::@1: scope:[keyboard_matrix_read] from to:keyboard_matrix_read::@return -@2: scope:[] from @1 - to:@3 +@5: scope:[] from @4 + to:@6 keyboard_key_pressed: scope:[keyboard_key_pressed] from (byte~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key & (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) keyboard_key_pressed::colidx ← (byte~) keyboard_key_pressed::$0 @@ -910,8 +1004,8 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p to:@return keyboard_key_pressed::@1: scope:[keyboard_key_pressed] from to:keyboard_key_pressed::@return -@3: scope:[] from @2 - to:@4 +@6: scope:[] from @5 + to:@7 keyboard_get_keycode: scope:[keyboard_get_keycode] from (byte) keyboard_get_keycode::return ← *((byte[]) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch) to:keyboard_get_keycode::@return @@ -921,7 +1015,7 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k to:@return keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from to:keyboard_get_keycode::@return -@4: scope:[] from @3 +@7: scope:[] from @6 (byte[8]) keyboard_events ← { fill( 8, 0) } (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -932,7 +1026,7 @@ keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT (byte) KEY_MODIFIER_SHIFT ← (byte~) $0 (byte[8]) keyboard_scan_values ← { fill( 8, 0) } - to:@5 + to:@8 keyboard_event_scan: scope:[keyboard_event_scan] from (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1045,8 +1139,8 @@ keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan: keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@12 return to:@return -@5: scope:[] from @4 - to:@6 +@8: scope:[] from @7 + to:@9 keyboard_event_pressed: scope:[keyboard_event_pressed] from (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3 (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0) @@ -1060,8 +1154,8 @@ keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_e to:@return keyboard_event_pressed::@1: scope:[keyboard_event_pressed] from to:keyboard_event_pressed::@return -@6: scope:[] from @5 - to:@7 +@9: scope:[] from @8 + to:@10 keyboard_event_get: scope:[keyboard_event_get] from (bool~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) keyboard_event_get::$0) goto keyboard_event_get::@1 @@ -1085,8 +1179,8 @@ keyboard_event_get::@5: scope:[keyboard_event_get] from to:keyboard_event_get::@1 keyboard_event_get::@6: scope:[keyboard_event_get] from to:keyboard_event_get::@2 -@7: scope:[] from @6 - to:@8 +@10: scope:[] from @9 + to:@11 main: scope:[main] from *((byte*) BORDERCOL) ← (byte) GREEN to:main::@1 @@ -1107,9 +1201,9 @@ main::@6: scope:[main] from main::@return: scope:[main] from main::@3 return to:@return -@8: scope:[] from @7 +@11: scope:[] from @10 (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 - to:@9 + to:@12 menu: scope:[menu] from to:menu::@1 menu::@1: scope:[menu] from menu menu::@6 @@ -1164,8 +1258,8 @@ menu::@14: scope:[menu] from to:menu::@6 menu::@15: scope:[menu] from to:menu::@3 -@9: scope:[] from @8 - to:@10 +@12: scope:[] from @11 + to:@13 pressed: scope:[pressed] from *((byte*) BGCOL) ← ++ *((byte*) BGCOL) to:pressed::@1 @@ -1195,11 +1289,15 @@ pressed::@8: scope:[pressed] from to:pressed::@4 pressed::@9: scope:[pressed] from to:pressed::@3 -@10: scope:[] from @9 +@13: scope:[] from @12 call main to:@end -@end: scope:[] from @10 +@end: scope:[] from @13 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Removing unused procedure keyboard_init Removing unused procedure keyboard_get_keycode Removing unused procedure keyboard_event_scan @@ -1338,14 +1436,16 @@ Eliminating unused variable (byte~) $0 and assignment [75] (byte~) $0 ← (byte) Eliminating unused variable (byte) KEY_MODIFIER_LSHIFT and assignment [27] (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1 Eliminating unused variable (byte) KEY_MODIFIER_RSHIFT and assignment [28] (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2 Removing empty block @1 -Removing empty block keyboard_matrix_read::@1 Removing empty block @2 -Removing empty block keyboard_key_pressed::@1 -Removing empty block @3 Removing empty block @4 +Removing empty block keyboard_matrix_read::@1 Removing empty block @5 +Removing empty block keyboard_key_pressed::@1 Removing empty block @6 Removing empty block @7 +Removing empty block @8 +Removing empty block @9 +Removing empty block @10 Removing empty block main::@4 Removing empty block main::@3 Removing empty block main::@5 @@ -1357,7 +1457,7 @@ Removing empty block menu::@10 Removing empty block menu::@12 Removing empty block menu::@14 Removing empty block menu::@15 -Removing empty block @9 +Removing empty block @12 Removing empty block pressed::@5 Removing empty block pressed::@3 Removing empty block pressed::@6 @@ -1388,13 +1488,15 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + to:@3 +@3: scope:[] from @begin (byte) KEY_E#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) KEY_C#0 ← (byte/signed byte/word/signed word/dword/signed dword) 20 (byte) KEY_I#0 ← (byte/signed byte/word/signed word/dword/signed dword) 33 (byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 60 (byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@8 + to:@11 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 ) *((byte*) CIA1_PORT_A#0) ← *((byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#1) @@ -1429,8 +1531,8 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p (byte) keyboard_key_pressed::return#1 ← (byte) keyboard_key_pressed::return#6 return to:@return -main: scope:[main] from @10 - (byte*) SCREEN#12 ← phi( @10/(byte*) SCREEN#14 ) +main: scope:[main] from @13 + (byte*) SCREEN#12 ← phi( @13/(byte*) SCREEN#14 ) *((byte*) BORDERCOL#0) ← (byte) GREEN#0 to:main::@1 main::@1: scope:[main] from main main::@7 @@ -1447,9 +1549,9 @@ main::@7: scope:[main] from main::@2 main::@return: scope:[main] from main::@1 return to:@return -@8: scope:[] from @begin +@11: scope:[] from @3 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 - to:@10 + to:@13 menu: scope:[menu] from main::@2 (byte*) SCREEN#9 ← phi( main::@2/(byte*) SCREEN#10 ) to:menu::@1 @@ -1542,18 +1644,19 @@ pressed::@4: scope:[pressed] from pressed::@10 pressed::@return: scope:[pressed] from pressed::@1 pressed::@10 return to:@return -@10: scope:[] from @8 - (byte*) SCREEN#14 ← phi( @8/(byte*) SCREEN#0 ) +@13: scope:[] from @11 + (byte*) SCREEN#14 ← phi( @11/(byte*) SCREEN#0 ) call main - to:@11 -@11: scope:[] from @10 + to:@14 +@14: scope:[] from @13 to:@end -@end: scope:[] from @11 +@end: scope:[] from @14 SYMBOL TABLE SSA -(label) @10 (label) @11 -(label) @8 +(label) @13 +(label) @14 +(label) @3 (label) @begin (label) @end (byte*) BGCOL @@ -1681,7 +1784,7 @@ SYMBOL TABLE SSA OPTIMIZING CONTROL FLOW GRAPH Culled Empty Block (label) menu::@18 Culled Empty Block (label) pressed::@4 -Culled Empty Block (label) @11 +Culled Empty Block (label) @14 Succesful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) menu::$2 ← (byte~) menu::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) menu::$1 ← (byte~) menu::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) menu::$6 ← (byte~) menu::$4 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) menu::$5 ← (byte~) menu::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1778,9 +1881,10 @@ if() condition always true - replacing block destination if(true) goto pressed:: Succesful SSA optimization Pass2ConstantIfs Removing unused block main::@return Succesful SSA optimization Pass2EliminateUnusedBlocks +Culled Empty Block (label) @3 Culled Empty Block (label) main::@1 Culled Empty Block (label) main::@7 -Culled Empty Block (label) @8 +Culled Empty Block (label) @11 Culled Empty Block (label) menu::@1 Culled Empty Block (label) pressed::@1 Succesful SSA optimization Pass2CullEmptyBlocks @@ -1816,10 +1920,10 @@ Constant inlined keyboard_key_pressed::key#1 = (const byte) KEY_I#0 Constant inlined keyboard_key_pressed::key#2 = (const byte) KEY_E#0 Constant inlined keyboard_key_pressed::key#3 = (const byte) KEY_SPACE#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @10 @end main main::@2 menu menu::@2 menu::@16 menu::@9 menu::@return menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@2 pressed::@10 pressed::@return -Block Sequence Planned @begin @10 @end main main::@2 menu menu::@2 menu::@16 menu::@9 menu::@return menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@2 pressed::@10 pressed::@return +Block Sequence Planned @begin @13 @end main main::@2 menu menu::@2 menu::@16 menu::@9 menu::@return menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@2 pressed::@10 pressed::@return +Block Sequence Planned @begin @13 @end main main::@2 menu menu::@2 menu::@16 menu::@9 menu::@return menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@2 pressed::@10 pressed::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @10 +Adding NOP phi() at start of @13 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@2 Adding NOP phi() at start of menu @@ -1844,9 +1948,9 @@ Propagating live ranges... Propagating live ranges... Created 1 initial phi equivalence classes Coalesced down to 1 phi equivalence classes -Block Sequence Planned @begin @10 @end main main::@2 menu menu::@2 menu::@16 menu::@9 menu::@return menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@2 pressed::@10 pressed::@return +Block Sequence Planned @begin @13 @end main main::@2 menu menu::@2 menu::@16 menu::@9 menu::@return menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@2 pressed::@10 pressed::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @10 +Adding NOP phi() at start of @13 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@2 Adding NOP phi() at start of menu @@ -1866,14 +1970,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@10 -@10: scope:[] from @begin + to:@13 +@13: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @10 +@end: scope:[] from @13 [3] phi() [ ] ( ) -main: scope:[main] from @10 +main: scope:[main] from @13 [4] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) to:main::@2 main::@2: scope:[main] from main main::@2 @@ -1968,31 +2072,31 @@ pressed::@return: scope:[pressed] from pressed::@10 DOMINATORS @begin dominated by @begin -@10 dominated by @10 @begin -@end dominated by @end @10 @begin -main dominated by main @10 @begin -main::@2 dominated by main main::@2 @10 @begin -menu dominated by main main::@2 @10 @begin menu -menu::@2 dominated by main main::@2 @10 @begin menu::@2 menu -menu::@16 dominated by main main::@2 @10 @begin menu::@2 menu menu::@16 -menu::@9 dominated by main main::@2 @10 @begin menu::@2 menu menu::@9 menu::@16 -menu::@return dominated by main main::@2 @10 @begin menu::@return menu::@2 menu menu::@16 -menu::@4 dominated by main main::@2 @10 @begin menu::@4 menu::@2 menu menu::@16 -menu::@17 dominated by main main::@2 @10 @begin menu::@4 menu::@2 menu menu::@17 menu::@16 -menu::@11 dominated by main main::@2 @10 @begin menu::@4 menu::@2 menu menu::@11 menu::@17 menu::@16 -menu::@5 dominated by main main::@2 @10 menu::@5 @begin menu::@4 menu::@2 menu menu::@17 menu::@16 -menu::@19 dominated by main main::@2 @10 menu::@5 @begin menu::@4 menu::@2 menu menu::@19 menu::@17 menu::@16 -menu::@13 dominated by main main::@2 @10 menu::@5 @begin menu::@4 menu::@2 menu menu::@19 menu::@13 menu::@17 menu::@16 -menu::@6 dominated by main main::@2 @10 menu::@5 @begin menu::@6 menu::@4 menu::@2 menu menu::@19 menu::@17 menu::@16 -keyboard_key_pressed dominated by main main::@2 @10 @begin menu::@2 menu keyboard_key_pressed -keyboard_key_pressed::@2 dominated by main main::@2 keyboard_key_pressed::@2 @10 @begin menu::@2 menu keyboard_key_pressed -keyboard_key_pressed::@return dominated by main keyboard_key_pressed::@return main::@2 keyboard_key_pressed::@2 @10 @begin menu::@2 menu keyboard_key_pressed -keyboard_matrix_read dominated by keyboard_matrix_read main main::@2 @10 @begin menu::@2 menu keyboard_key_pressed -keyboard_matrix_read::@return dominated by keyboard_matrix_read main main::@2 @10 @begin menu::@2 menu keyboard_matrix_read::@return keyboard_key_pressed -pressed dominated by main main::@2 @10 @begin pressed menu::@2 menu menu::@9 menu::@16 -pressed::@2 dominated by main pressed::@2 main::@2 @10 @begin pressed menu::@2 menu menu::@9 menu::@16 -pressed::@10 dominated by pressed::@10 main pressed::@2 main::@2 @10 @begin pressed menu::@2 menu menu::@9 menu::@16 -pressed::@return dominated by pressed::@10 main pressed::@2 main::@2 @10 @begin pressed menu::@2 menu menu::@9 pressed::@return menu::@16 +@13 dominated by @13 @begin +@end dominated by @end @13 @begin +main dominated by main @13 @begin +main::@2 dominated by main main::@2 @13 @begin +menu dominated by main main::@2 @13 @begin menu +menu::@2 dominated by main main::@2 @13 @begin menu::@2 menu +menu::@16 dominated by main main::@2 @13 @begin menu::@2 menu menu::@16 +menu::@9 dominated by main main::@2 @13 @begin menu::@2 menu menu::@9 menu::@16 +menu::@return dominated by main main::@2 @13 @begin menu::@return menu::@2 menu menu::@16 +menu::@4 dominated by main main::@2 @13 @begin menu::@4 menu::@2 menu menu::@16 +menu::@17 dominated by main main::@2 @13 @begin menu::@4 menu::@2 menu menu::@17 menu::@16 +menu::@11 dominated by main main::@2 @13 @begin menu::@4 menu::@2 menu menu::@11 menu::@17 menu::@16 +menu::@5 dominated by main main::@2 @13 menu::@5 @begin menu::@4 menu::@2 menu menu::@17 menu::@16 +menu::@19 dominated by main main::@2 @13 menu::@5 @begin menu::@4 menu::@2 menu menu::@19 menu::@17 menu::@16 +menu::@13 dominated by main main::@2 @13 menu::@5 @begin menu::@4 menu::@2 menu menu::@19 menu::@13 menu::@17 menu::@16 +menu::@6 dominated by main main::@2 @13 menu::@5 @begin menu::@6 menu::@4 menu::@2 menu menu::@19 menu::@17 menu::@16 +keyboard_key_pressed dominated by main main::@2 @13 @begin menu::@2 menu keyboard_key_pressed +keyboard_key_pressed::@2 dominated by main main::@2 keyboard_key_pressed::@2 @13 @begin menu::@2 menu keyboard_key_pressed +keyboard_key_pressed::@return dominated by main keyboard_key_pressed::@return main::@2 keyboard_key_pressed::@2 @13 @begin menu::@2 menu keyboard_key_pressed +keyboard_matrix_read dominated by keyboard_matrix_read main main::@2 @13 @begin menu::@2 menu keyboard_key_pressed +keyboard_matrix_read::@return dominated by keyboard_matrix_read main main::@2 @13 @begin menu::@2 menu keyboard_matrix_read::@return keyboard_key_pressed +pressed dominated by main main::@2 @13 @begin pressed menu::@2 menu menu::@9 menu::@16 +pressed::@2 dominated by main pressed::@2 main::@2 @13 @begin pressed menu::@2 menu menu::@9 menu::@16 +pressed::@10 dominated by pressed::@10 main pressed::@2 main::@2 @13 @begin pressed menu::@2 menu menu::@9 menu::@16 +pressed::@return dominated by pressed::@10 main pressed::@2 main::@2 @13 @begin pressed menu::@2 menu menu::@9 pressed::@return menu::@16 NATURAL LOOPS Found back edge: Loop head: main::@2 tails: main::@2 blocks: null @@ -2134,15 +2238,15 @@ INITIAL ASM .label SCREEN = $400 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @10 [phi:@begin->@10] -b10_from_bbegin: - jmp b10 -//SEG4 @10 -b10: +//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] +b13_from_bbegin: + jmp b13 +//SEG4 @13 +b13: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @10 to @end [phi:@10->@end] -bend_from_b10: +//SEG6 [3] phi from @13 to @end [phi:@13->@end] +bend_from_b13: jmp bend //SEG7 @end bend: @@ -2462,15 +2566,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label SCREEN = $400 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @10 [phi:@begin->@10] -b10_from_bbegin: - jmp b10 -//SEG4 @10 -b10: +//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] +b13_from_bbegin: + jmp b13 +//SEG4 @13 +b13: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @10 to @end [phi:@10->@end] -bend_from_b10: +//SEG6 [3] phi from @13 to @end [phi:@13->@end] +bend_from_b13: jmp bend //SEG7 @end bend: @@ -2673,7 +2777,7 @@ pressed: { keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b10 +Removing instruction jmp b13 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b2 @@ -2699,8 +2803,8 @@ Replacing label b5_from_b17 with b5 Replacing label b2_from_b6 with b2 Replacing label b2_from_b10 with b2 Removing instruction bbegin: -Removing instruction b10_from_bbegin: -Removing instruction bend_from_b10: +Removing instruction b13_from_bbegin: +Removing instruction bend_from_b13: Removing instruction b2_from_main: Removing instruction b2_from_b2: Removing instruction menu_from_b2: @@ -2716,7 +2820,7 @@ Removing instruction b2_from_pressed: Removing instruction b2_from_b10: Removing instruction keyboard_key_pressed_from_b2: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b10: +Removing instruction b13: Removing instruction bend: Removing instruction b16: Removing instruction b9: @@ -2732,7 +2836,7 @@ Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE -(label) @10 +(label) @13 (label) @begin (label) @end (byte*) BGCOL @@ -2846,11 +2950,11 @@ Score: 2851 .const KEY_SPACE = $3c .label SCREEN = $400 //SEG2 @begin -//SEG3 [1] phi from @begin to @10 [phi:@begin->@10] -//SEG4 @10 +//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] +//SEG4 @13 //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @10 to @end [phi:@10->@end] +//SEG6 [3] phi from @13 to @end [phi:@13->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.sym b/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.sym index cc695bbc8..0cf478075 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.sym @@ -1,4 +1,4 @@ -(label) @10 +(label) @13 (label) @begin (label) @end (byte*) BGCOL diff --git a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.asm b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.asm index 8cfd079c3..1f98aedb0 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.asm @@ -1,21 +1,96 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" + .label PROCPORT_DDR = 0 + .const PROCPORT_DDR_MEMORY_MASK = 7 + .label PROCPORT = 1 + .const PROCPORT_RAM_IO = $35 + .label BORDERCOL = $d020 + .label D011 = $d011 + .const VIC_BMM = $20 + .const VIC_DEN = $10 + .const VIC_RSEL = 8 + .label D018 = $d018 + .label CIA2_PORT_A = $dd00 + .label CIA2_PORT_A_DDR = $dd02 + .label BITMAP = $a000 + .label SCREEN = $8800 + .const DELAY = 8 jsr main main: { + .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6 + .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f + sei + lda #PROCPORT_DDR_MEMORY_MASK + sta PROCPORT_DDR + lda #PROCPORT_RAM_IO + sta PROCPORT + lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 + sta D011 + lda #3 + sta CIA2_PORT_A_DDR + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + lda #toD0181_return + sta D018 + jsr bitmap_init + jsr bitmap_clear + jsr screen_fill ldx #0 b1: - jsr init + jsr point_init + txa + lsr + tay + lda x_start,x + sta bitmap_plot.x + lda x_start+1,x + sta bitmap_plot.x+1 + lda y_start,y + jsr bitmap_plot inx inx cpx #8 bne b1 + b3: + inc BORDERCOL + jmp b3 +} +bitmap_plot: { + .label _1 = 7 + .label x = 3 + .label plotter = 5 + .label _3 = 5 + tay + lda bitmap_plot_yhi,y + sta _3+1 + lda bitmap_plot_ylo,y + sta _3 + lda x + and #<$fff8 + sta _1 + lda x+1 + and #>$fff8 + sta _1+1 + lda plotter + clc + adc _1 + sta plotter + lda plotter+1 + adc _1+1 + sta plotter+1 + lda x + tay + lda bitmap_plot_bit,y + ldy #0 + ora (plotter),y + sta (plotter),y rts } -init: { - .label _0 = 2 - .label _2 = 2 - .label _3 = 2 +point_init: { + .label _0 = 3 + .label _2 = 3 + .label _3 = 3 lda x_start,x sta _0 lda x_start+1,x @@ -51,9 +126,122 @@ init: { sta y_cur,x lda _3+1 sta y_cur+1,x + txa + lsr + tay + lda #DELAY + sta delay,y + rts +} +screen_fill: { + .const ch = $10 + .label screen = 3 + .label y = 2 + lda #0 + sta y + lda #SCREEN + sta screen+1 + b1: + ldx #0 + b2: + lda #ch + ldy #0 + sta (screen),y + inc screen + bne !+ + inc screen+1 + !: + inx + cpx #$28 + bne b2 + inc y + lda y + cmp #$19 + bne b1 + rts +} +bitmap_clear: { + .label bitmap = 3 + .label y = 2 + .label _3 = 3 + lda bitmap_plot_ylo+0 + sta _3 + lda bitmap_plot_yhi+0 + sta _3+1 + lda #0 + sta y + b1: + ldx #0 + b2: + lda #0 + tay + sta (bitmap),y + inc bitmap + bne !+ + inc bitmap+1 + !: + inx + cpx #$c8 + bne b2 + inc y + lda y + cmp #$28 + bne b1 + rts +} +bitmap_init: { + .label _3 = 2 + .label yoffs = 3 + ldx #0 + lda #$80 + b1: + sta bitmap_plot_bit,x + lsr + cmp #0 + bne b2 + lda #$80 + b2: + inx + cpx #0 + bne b1 + lda #BITMAP + sta yoffs+1 + ldx #0 + b3: + txa + and #7 + sta _3 + lda yoffs + ora _3 + sta bitmap_plot_ylo,x + lda yoffs+1 + sta bitmap_plot_yhi,x + txa + and #7 + cmp #7 + bne b4 + clc + lda yoffs + adc #<$28*8 + sta yoffs + lda yoffs+1 + adc #>$28*8 + sta yoffs+1 + b4: + inx + cpx #0 + bne b3 rts } x_start: .word $a, $14, $1e, $1e y_start: .byte $a, $a, $a, $14 x_cur: .fill 8, 0 y_cur: .fill 8, 0 + delay: .fill 4, 0 + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.cfg b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.cfg index d356e48bf..46d640641 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.cfg @@ -1,35 +1,166 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@2 -@2: scope:[] from @begin + to:@9 +@9: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @2 +@end: scope:[] from @9 [3] phi() [ ] ( ) -main: scope:[main] from @2 - [4] phi() [ ] ( main:2 [ ] ) +main: scope:[main] from @9 + asm { sei } + [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) + [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) + [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) + to:main::vicSelectGfxBank1 +main::vicSelectGfxBank1: scope:[main] from main + [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) + to:main::vicSelectGfxBank1_toDd001 +main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 + [9] phi() [ ] ( main:2 [ ] ) + to:main::vicSelectGfxBank1_@1 +main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 + [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) + to:main::toD0181 +main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1 + [11] phi() [ ] ( main:2 [ ] ) + to:main::@10 +main::@10: scope:[main] from main::toD0181 + [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) + [13] call bitmap_init [ ] ( main:2 [ ] ) + to:main::@11 +main::@11: scope:[main] from main::@10 + [14] phi() [ ] ( main:2 [ ] ) + [15] call bitmap_clear [ ] ( main:2 [ ] ) + to:main::@12 +main::@12: scope:[main] from main::@11 + [16] phi() [ ] ( main:2 [ ] ) + [17] call screen_fill [ ] ( main:2 [ ] ) to:main::@1 -main::@1: scope:[main] from main main::@3 - [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] (byte) init::point_idx#0 ← (byte) main::i#2 [ main::i#2 init::point_idx#0 ] ( main:2 [ main::i#2 init::point_idx#0 ] ) - [7] call init [ main::i#2 ] ( main:2 [ main::i#2 ] ) +main::@1: scope:[main] from main::@12 main::@15 + [18] (byte) main::i#2 ← phi( main::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@15/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 [ main::i#2 point_init::point_idx#0 ] ( main:2 [ main::i#2 point_init::point_idx#0 ] ) + [20] call point_init [ main::i#2 ] ( main:2 [ main::i#2 ] ) + to:main::@14 +main::@14: scope:[main] from main::@1 + [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) + [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) + [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) [ main::i#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ( main:2 [ main::i#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ) + [24] call bitmap_plot [ main::i#2 ] ( main:2 [ main::i#2 ] ) + to:main::@15 +main::@15: scope:[main] from main::@14 + [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@3 -main::@3: scope:[main] from main::@1 - [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) - [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) - to:main::@return -main::@return: scope:[main] from main::@3 - [10] return [ ] ( main:2 [ ] ) +main::@3: scope:[main] from main::@15 main::@3 + [27] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ ] ( main:2 [ ] ) + to:main::@3 +bitmap_plot: scope:[bitmap_plot] from main::@14 + [28] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) + [29] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) + [30] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) + [31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) + [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) + to:bitmap_plot::@return +bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot + [33] return [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) to:@return -init: scope:[init] from main::@1 - [11] (word~) init::$0 ← *((const word[4]) x_start#0 + (byte) init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$0 ] ) - [12] *((const word[4]) x_cur#0 + (byte) init::point_idx#0) ← (word~) init::$0 [ init::point_idx#0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 ] ) - [13] (byte~) init::$1 ← (byte) init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::point_idx#0 init::$1 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$1 ] ) - [14] (word~) init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) init::$1) [ init::point_idx#0 init::$2 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$2 ] ) - [15] (word~) init::$3 ← (word~) init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$3 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$3 ] ) - [16] *((const word[4]) y_cur#0 + (byte) init::point_idx#0) ← (word~) init::$3 [ ] ( main:2::init:7 [ main::i#2 ] ) - to:init::@return -init::@return: scope:[init] from init - [17] return [ ] ( main:2::init:7 [ main::i#2 ] ) +point_init: scope:[point_init] from main::@1 + [34] (word~) point_init::$0 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$0 ] ) + [35] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$0 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) + [36] (byte~) point_init::$1 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$1 ] ) + [37] (word~) point_init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) point_init::$1) [ point_init::point_idx#0 point_init::$2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$2 ] ) + [38] (word~) point_init::$3 ← (word~) point_init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$3 ] ) + [39] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$3 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) + [40] (byte~) point_init::$4 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::$4 ] ) + [41] *((const byte[4]) delay#0 + (byte~) point_init::$4) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) + to:point_init::@return +point_init::@return: scope:[point_init] from point_init + [42] return [ ] ( main:2::point_init:20 [ main::i#2 ] ) to:@return +screen_fill: scope:[screen_fill] from main::@12 + [43] phi() [ ] ( main:2::screen_fill:17 [ ] ) + to:screen_fill::@1 +screen_fill::@1: scope:[screen_fill] from screen_fill screen_fill::@3 + [44] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 ) [ screen_fill::screen#3 screen_fill::y#4 ] ( main:2::screen_fill:17 [ screen_fill::screen#3 screen_fill::y#4 ] ) + [44] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 ) [ screen_fill::screen#3 screen_fill::y#4 ] ( main:2::screen_fill:17 [ screen_fill::screen#3 screen_fill::y#4 ] ) + to:screen_fill::@2 +screen_fill::@2: scope:[screen_fill] from screen_fill::@1 screen_fill::@2 + [45] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 ) [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) + [45] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 ) [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) + [46] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) + [47] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] ) + [48] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ) + [49] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ) + to:screen_fill::@3 +screen_fill::@3: scope:[screen_fill] from screen_fill::@2 + [50] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] ) + [51] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] ) + to:screen_fill::@return +screen_fill::@return: scope:[screen_fill] from screen_fill::@3 + [52] return [ ] ( main:2::screen_fill:17 [ ] ) + to:@return +bitmap_clear: scope:[bitmap_clear] from main::@11 + [53] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0+(byte/signed byte/word/signed word/dword/signed dword) 0) w= *((const byte[256]) bitmap_plot_ylo#0+(byte/signed byte/word/signed word/dword/signed dword) 0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) + [54] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) + to:bitmap_clear::@1 +bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 + [55] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ) + [55] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ) + to:bitmap_clear::@2 +bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 + [56] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) + [56] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) + [57] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) + [58] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] ) + [59] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ) + [60] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ) + to:bitmap_clear::@3 +bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 + [61] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ) + [62] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ) + to:bitmap_clear::@return +bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 + [63] return [ ] ( main:2::bitmap_clear:15 [ ] ) + to:@return +bitmap_init: scope:[bitmap_init] from main::@10 + [64] phi() [ ] ( main:2::bitmap_init:13 [ ] ) + to:bitmap_init::@1 +bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 + [65] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] ) + [65] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] ) + [66] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] ) + [67] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] ) + [68] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] ) + to:bitmap_init::@2 +bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10 + [69] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) [ bitmap_init::x#2 bitmap_init::bits#4 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#4 ] ) + [70] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] ) + [71] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] ) + to:bitmap_init::@3 +bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 + [72] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) + [72] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) + [73] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) + [74] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] ) + [75] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] ) + [76] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) + [77] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ) + [78] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) + [79] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) + [80] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) + to:bitmap_init::@7 +bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3 + [81] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) + to:bitmap_init::@4 +bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7 + [82] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) [ bitmap_init::y#2 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#4 ] ) + [83] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ) + [84] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ) + to:bitmap_init::@return +bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 + [85] return [ ] ( main:2::bitmap_init:13 [ ] ) + to:@return +bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1 + [86] phi() [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] ) + to:bitmap_init::@2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.log b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.log index be0e48e9f..7e60b9942 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.log @@ -1,8 +1,14 @@ PARSING src/test/java/dk/camelot64/kickc/test/kc/line-anim.kc // Animated lines drawn on a single color bitmap +import "c64.kc" + +byte* BITMAP = $a000; +byte* SCREEN = $8800; // The number of points const byte SIZE = 4; +// The delay between pixels +const byte DELAY = 8; // The coordinates of the lines to animate word[4] x_start = { 10, 20, 30, 30 }; @@ -24,41 +30,407 @@ byte[4] delay; byte[4] frame; void main() { + asm { sei } // Disable normal interrupt + // Disable kernal & basic + *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK; + *PROCPORT = PROCPORT_RAM_IO; + *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3; + vicSelectGfxBank(SCREEN); + *D018 = toD018(SCREEN, BITMAP); + bitmap_init(BITMAP); + bitmap_clear(); + screen_fill(SCREEN, $10); for( byte i=0; i!=8; i+=2) { - init(i); + point_init(i); + bitmap_plot(x_start[i], y_start[i>>1]); + } + while(true) { + (*BORDERCOL)++; } - } -void init(byte point_idx) { +// Initialize the points to be animated +void point_init(byte point_idx) { x_cur[point_idx] = x_start[point_idx]<<4; y_cur[point_idx] = ((word)y_start[point_idx>>1])<<4; + delay[point_idx>>1] = DELAY; +} + +// Fill the screen with a specific char +void screen_fill(byte* screen, byte ch) { + for( byte y: 0..24) { + for(byte x:0..39) { + *screen++ = ch; + } + } +} + +// Tables for the plotter - initialized by calling bitmap_draw_init(); +const byte[256] bitmap_plot_ylo; +const byte[256] bitmap_plot_yhi; +const byte[256] bitmap_plot_bit; + +void bitmap_init(byte* bitmap) { + byte bits = $80; + for(byte x : 0..255) { + bitmap_plot_bit[x] = bits; + bits >>= 1; + if(bits==0) { + bits = $80; + } + } + byte* yoffs = bitmap; + for(byte y : 0..255) { + bitmap_plot_ylo[y] = y&$7 | yoffs; + if((y&$7)==7) { + yoffs = yoffs + 40*8; + } + } +} + +// Clear all graphics on the bitmap +void bitmap_clear() { + byte* bitmap = (byte*) { bitmap_plot_yhi[0], bitmap_plot_ylo[0] }; + for( byte y: 0..39 ) { + for( byte x: 0..199 ) { + *bitmap++ = 0; + } + } +} + +// Plot a single dot in the bitmap +void bitmap_plot(word x, byte y) { + byte* plotter = (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }; + plotter += ( x & $fff8 ); + *plotter |= bitmap_plot_bit[((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + +Adding pre/post-modifier *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL) +Adding pre/post-modifier (byte*) screen_fill::screen ← ++ (byte*) screen_fill::screen +Adding pre/post-modifier (byte*) bitmap_clear::bitmap ← ++ (byte*) bitmap_clear::bitmap SYMBOLS (label) @1 (label) @2 +(label) @3 +(label) @4 +(label) @5 +(label) @6 +(label) @7 +(label) @8 +(label) @9 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte*) BITMAP +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) DELAY +(byte) GREEN +(byte) GREY +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED +(byte*) SCREEN (byte) SIZE +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW +(void()) bitmap_clear() +(byte*~) bitmap_clear::$0 +(bool~) bitmap_clear::$1 +(bool~) bitmap_clear::$2 +(label) bitmap_clear::@1 +(label) bitmap_clear::@2 +(label) bitmap_clear::@3 +(label) bitmap_clear::@4 +(label) bitmap_clear::@return +(byte*) bitmap_clear::bitmap +(byte) bitmap_clear::x +(byte) bitmap_clear::y +(void()) bitmap_init((byte*) bitmap_init::bitmap) +(bool~) bitmap_init::$0 +(bool~) bitmap_init::$1 +(word/signed word/dword/signed dword~) bitmap_init::$10 +(byte*~) bitmap_init::$11 +(bool~) bitmap_init::$12 +(bool~) bitmap_init::$2 +(byte~) bitmap_init::$3 +(byte~) bitmap_init::$4 +(byte~) bitmap_init::$5 +(byte~) bitmap_init::$6 +(byte~) bitmap_init::$7 +(bool~) bitmap_init::$8 +(bool~) bitmap_init::$9 +(label) bitmap_init::@1 +(label) bitmap_init::@2 +(label) bitmap_init::@3 +(label) bitmap_init::@4 +(label) bitmap_init::@5 +(label) bitmap_init::@6 +(label) bitmap_init::@7 +(label) bitmap_init::@8 +(label) bitmap_init::@return +(byte*) bitmap_init::bitmap +(byte) bitmap_init::bits +(byte) bitmap_init::x +(byte) bitmap_init::y +(byte*) bitmap_init::yoffs +(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) +(byte*~) bitmap_plot::$0 +(word~) bitmap_plot::$1 +(byte~) bitmap_plot::$2 +(label) bitmap_plot::@return +(byte*) bitmap_plot::plotter +(word) bitmap_plot::x +(byte) bitmap_plot::y +(byte[256]) bitmap_plot_bit +(byte[256]) bitmap_plot_yhi +(byte[256]) bitmap_plot_ylo (byte[4]) delay (byte[4]) frame -(void()) init((byte) init::point_idx) -(word~) init::$0 -(byte~) init::$1 -(word~) init::$2 -(word~) init::$3 -(label) init::@return -(byte) init::point_idx (void()) main() -(void~) main::$0 -(bool~) main::$1 +(byte~) main::$0 +(byte~) main::$1 +(void~) main::$10 +(bool~) main::$11 +(byte/word/dword~) main::$2 +(void~) main::$3 +(byte~) main::$4 +(void~) main::$5 +(void~) main::$6 +(void~) main::$7 +(void~) main::$8 +(byte~) main::$9 (label) main::@1 (label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@7 +(label) main::@8 (label) main::@return (byte) main::i +(void()) point_init((byte) point_init::point_idx) +(word~) point_init::$0 +(byte~) point_init::$1 +(word~) point_init::$2 +(word~) point_init::$3 +(byte~) point_init::$4 +(label) point_init::@return +(byte) point_init::point_idx +(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch) +(bool~) screen_fill::$0 +(bool~) screen_fill::$1 +(label) screen_fill::@1 +(label) screen_fill::@2 +(label) screen_fill::@3 +(label) screen_fill::@4 +(label) screen_fill::@return +(byte) screen_fill::ch +(byte*) screen_fill::screen +(byte) screen_fill::x +(byte) screen_fill::y +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx (signed byte[4]) x_add (word[4]) x_cur (word[4]) x_end @@ -68,9 +440,160 @@ SYMBOLS (byte[4]) y_end (byte[4]) y_start +Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 +Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 +Promoting word/dword/signed dword to byte* in CHARGEN ← ((byte*)) 53248 +Promoting word/dword/signed dword to byte* in SPRITES_XPOS ← ((byte*)) 53248 +Promoting word/dword/signed dword to byte* in SPRITES_YPOS ← ((byte*)) 53249 +Promoting word/dword/signed dword to byte* in SPRITES_XMSB ← ((byte*)) 53264 +Promoting word/dword/signed dword to byte* in RASTER ← ((byte*)) 53266 +Promoting word/dword/signed dword to byte* in SPRITES_ENABLE ← ((byte*)) 53269 +Promoting word/dword/signed dword to byte* in SPRITES_EXPAND_Y ← ((byte*)) 53271 +Promoting word/dword/signed dword to byte* in SPRITES_PRIORITY ← ((byte*)) 53275 +Promoting word/dword/signed dword to byte* in SPRITES_MC ← ((byte*)) 53276 +Promoting word/dword/signed dword to byte* in SPRITES_EXPAND_X ← ((byte*)) 53277 +Promoting word/dword/signed dword to byte* in BORDERCOL ← ((byte*)) 53280 +Promoting word/dword/signed dword to byte* in BGCOL ← ((byte*)) 53281 +Promoting word/dword/signed dword to byte* in BGCOL1 ← ((byte*)) 53281 +Promoting word/dword/signed dword to byte* in BGCOL2 ← ((byte*)) 53282 +Promoting word/dword/signed dword to byte* in BGCOL3 ← ((byte*)) 53283 +Promoting word/dword/signed dword to byte* in BGCOL4 ← ((byte*)) 53284 +Promoting word/dword/signed dword to byte* in SPRITES_MC1 ← ((byte*)) 53285 +Promoting word/dword/signed dword to byte* in SPRITES_MC2 ← ((byte*)) 53286 +Promoting word/dword/signed dword to byte* in SPRITES_COLS ← ((byte*)) 53287 +Promoting word/dword/signed dword to byte* in VIC_CONTROL ← ((byte*)) 53265 +Promoting word/dword/signed dword to byte* in D011 ← ((byte*)) 53265 +Promoting word/dword/signed dword to byte* in VIC_CONTROL2 ← ((byte*)) 53270 +Promoting word/dword/signed dword to byte* in D016 ← ((byte*)) 53270 +Promoting word/dword/signed dword to byte* in D018 ← ((byte*)) 53272 +Promoting word/dword/signed dword to byte* in VIC_MEMORY ← ((byte*)) 53272 +Promoting word/dword/signed dword to byte* in COLS ← ((byte*)) 55296 +Promoting word/dword/signed dword to byte* in CIA1_PORT_A ← ((byte*)) 56320 +Promoting word/dword/signed dword to byte* in CIA1_PORT_B ← ((byte*)) 56321 +Promoting word/dword/signed dword to byte* in CIA1_PORT_A_DDR ← ((byte*)) 56322 +Promoting word/dword/signed dword to byte* in CIA1_PORT_B_DDR ← ((byte*)) 56323 +Promoting word/dword/signed dword to byte* in CIA2_PORT_A ← ((byte*)) 56576 +Promoting word/dword/signed dword to byte* in CIA2_PORT_B ← ((byte*)) 56577 +Promoting word/dword/signed dword to byte* in CIA2_PORT_A_DDR ← ((byte*)) 56578 +Promoting word/dword/signed dword to byte* in CIA2_PORT_B_DDR ← ((byte*)) 56579 +Promoting word/dword/signed dword to byte* in BITMAP ← ((byte*)) 40960 +Promoting word/dword/signed dword to byte* in SCREEN ← ((byte*)) 34816 INITIAL CONTROL FLOW GRAPH @begin: scope:[] from + (byte*) PROCPORT_DDR ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_XPOS ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB ← ((byte*)) (word/dword/signed dword) 53264 + (byte*) RASTER ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X ← ((byte*)) (word/dword/signed dword) 53277 + (byte*) BORDERCOL ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) BGCOL ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) COLS ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA2_PORT_A ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR ← ((byte*)) (word/dword/signed dword) 56579 + (byte) BLACK ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 + (byte*) BITMAP ← ((byte*)) (word/dword/signed dword) 40960 + (byte*) SCREEN ← ((byte*)) (word/dword/signed dword) 34816 (byte) SIZE ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DELAY ← (byte/signed byte/word/signed word/dword/signed dword) 8 (word[4]) x_start ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 30, (byte/signed byte/word/signed word/dword/signed dword) 30 } (byte[4]) y_start ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 } (word[4]) x_end ← { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20 } @@ -81,120 +604,882 @@ INITIAL CONTROL FLOW GRAPH (signed byte[4]) y_add ← { fill( 4, 0) } (byte[4]) delay ← { fill( 4, 0) } (byte[4]) frame ← { fill( 4, 0) } - to:@1 + to:@4 main: scope:[main] from + asm { sei } + *((byte*) PROCPORT_DDR) ← (byte) PROCPORT_DDR_MEMORY_MASK + *((byte*) PROCPORT) ← (byte) PROCPORT_RAM_IO + (byte~) main::$0 ← (byte) VIC_BMM | (byte) VIC_DEN + (byte~) main::$1 ← (byte~) main::$0 | (byte) VIC_RSEL + (byte/word/dword~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word/dword/signed dword) 3 + *((byte*) D011) ← (byte/word/dword~) main::$2 + (void~) main::$3 ← call vicSelectGfxBank (byte*) SCREEN + (byte~) main::$4 ← call toD018 (byte*) SCREEN (byte*) BITMAP + *((byte*) D018) ← (byte~) main::$4 + (void~) main::$5 ← call bitmap_init (byte*) BITMAP + (void~) main::$6 ← call bitmap_clear + (void~) main::$7 ← call screen_fill (byte*) SCREEN (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) main::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (void~) main::$0 ← call init (byte) main::i + (void~) main::$8 ← call point_init (byte) main::i + (byte~) main::$9 ← (byte) main::i >> (byte/signed byte/word/signed word/dword/signed dword) 1 + (void~) main::$10 ← call bitmap_plot *((word[4]) x_start + (byte) main::i) *((byte[4]) y_start + (byte~) main::$9) (byte) main::i ← (byte) main::i + (byte/signed byte/word/signed word/dword/signed dword) 2 - (bool~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word/dword/signed dword) 8 - if((bool~) main::$1) goto main::@1 + (bool~) main::$11 ← (byte) main::i != (byte/signed byte/word/signed word/dword/signed dword) 8 + if((bool~) main::$11) goto main::@1 + to:main::@5 +main::@5: scope:[main] from main::@1 to:main::@2 -main::@2: scope:[main] from main::@1 +main::@2: scope:[main] from main::@3 main::@5 + if(true) goto main::@3 + to:main::@6 +main::@3: scope:[main] from main::@2 main::@7 + *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL) + to:main::@2 +main::@6: scope:[main] from main::@2 + to:main::@4 +main::@4: scope:[main] from main::@6 main::@8 to:main::@return -main::@return: scope:[main] from main::@2 +main::@7: scope:[main] from + to:main::@3 +main::@8: scope:[main] from + to:main::@4 +main::@return: scope:[main] from main::@4 return to:@return -@1: scope:[] from @begin - to:@2 -init: scope:[init] from - (word~) init::$0 ← *((word[4]) x_start + (byte) init::point_idx) << (byte/signed byte/word/signed word/dword/signed dword) 4 - *((word[4]) x_cur + (byte) init::point_idx) ← (word~) init::$0 - (byte~) init::$1 ← (byte) init::point_idx >> (byte/signed byte/word/signed word/dword/signed dword) 1 - (word~) init::$2 ← ((word)) *((byte[4]) y_start + (byte~) init::$1) - (word~) init::$3 ← (word~) init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 - *((word[4]) y_cur + (byte) init::point_idx) ← (word~) init::$3 - to:init::@return -init::@return: scope:[init] from init +@4: scope:[] from @3 + to:@5 +point_init: scope:[point_init] from + (word~) point_init::$0 ← *((word[4]) x_start + (byte) point_init::point_idx) << (byte/signed byte/word/signed word/dword/signed dword) 4 + *((word[4]) x_cur + (byte) point_init::point_idx) ← (word~) point_init::$0 + (byte~) point_init::$1 ← (byte) point_init::point_idx >> (byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) point_init::$2 ← ((word)) *((byte[4]) y_start + (byte~) point_init::$1) + (word~) point_init::$3 ← (word~) point_init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 + *((word[4]) y_cur + (byte) point_init::point_idx) ← (word~) point_init::$3 + (byte~) point_init::$4 ← (byte) point_init::point_idx >> (byte/signed byte/word/signed word/dword/signed dword) 1 + *((byte[4]) delay + (byte~) point_init::$4) ← (byte) DELAY + to:point_init::@return +point_init::@return: scope:[point_init] from point_init return to:@return -@2: scope:[] from @1 +@5: scope:[] from @4 + to:@6 +screen_fill: scope:[screen_fill] from + (byte) screen_fill::y ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:screen_fill::@1 +screen_fill::@1: scope:[screen_fill] from screen_fill screen_fill::@3 + (byte) screen_fill::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:screen_fill::@2 +screen_fill::@2: scope:[screen_fill] from screen_fill::@1 screen_fill::@2 + *((byte*) screen_fill::screen) ← (byte) screen_fill::ch + (byte*) screen_fill::screen ← ++ (byte*) screen_fill::screen + (byte) screen_fill::x ← ++ (byte) screen_fill::x + (bool~) screen_fill::$0 ← (byte) screen_fill::x != (byte/signed byte/word/signed word/dword/signed dword) 40 + if((bool~) screen_fill::$0) goto screen_fill::@2 + to:screen_fill::@3 +screen_fill::@3: scope:[screen_fill] from screen_fill::@2 + (byte) screen_fill::y ← ++ (byte) screen_fill::y + (bool~) screen_fill::$1 ← (byte) screen_fill::y != (byte/signed byte/word/signed word/dword/signed dword) 25 + if((bool~) screen_fill::$1) goto screen_fill::@1 + to:screen_fill::@4 +screen_fill::@4: scope:[screen_fill] from screen_fill::@3 + to:screen_fill::@return +screen_fill::@return: scope:[screen_fill] from screen_fill::@4 + return + to:@return +@6: scope:[] from @5 + (byte[256]) bitmap_plot_ylo ← { fill( 256, 0) } + (byte[256]) bitmap_plot_yhi ← { fill( 256, 0) } + (byte[256]) bitmap_plot_bit ← { fill( 256, 0) } + to:@7 +bitmap_init: scope:[bitmap_init] from + (byte) bitmap_init::bits ← (byte/word/signed word/dword/signed dword) 128 + (byte) bitmap_init::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:bitmap_init::@1 +bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 + *((byte[256]) bitmap_plot_bit + (byte) bitmap_init::x) ← (byte) bitmap_init::bits + (byte) bitmap_init::bits ← (byte) bitmap_init::bits >> (byte/signed byte/word/signed word/dword/signed dword) 1 + (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits == (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) bitmap_init::$1 ← ! (bool~) bitmap_init::$0 + if((bool~) bitmap_init::$1) goto bitmap_init::@2 + to:bitmap_init::@5 +bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@5 + (byte) bitmap_init::x ← ++ (byte) bitmap_init::x + (bool~) bitmap_init::$2 ← (byte) bitmap_init::x != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) bitmap_init::$2) goto bitmap_init::@1 + to:bitmap_init::@6 +bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@1 + (byte) bitmap_init::bits ← (byte/word/signed word/dword/signed dword) 128 + to:bitmap_init::@2 +bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@2 + (byte*) bitmap_init::yoffs ← (byte*) bitmap_init::bitmap + (byte) bitmap_init::y ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:bitmap_init::@3 +bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@4 bitmap_init::@6 + (byte~) bitmap_init::$3 ← (byte) bitmap_init::y & (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs + (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 + *((byte[256]) bitmap_plot_ylo + (byte) bitmap_init::y) ← (byte~) bitmap_init::$5 + (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs + *((byte[256]) bitmap_plot_yhi + (byte) bitmap_init::y) ← (byte~) bitmap_init::$6 + (byte~) bitmap_init::$7 ← (byte) bitmap_init::y & (byte/signed byte/word/signed word/dword/signed dword) 7 + (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7 + (bool~) bitmap_init::$9 ← ! (bool~) bitmap_init::$8 + if((bool~) bitmap_init::$9) goto bitmap_init::@4 + to:bitmap_init::@7 +bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7 + (byte) bitmap_init::y ← ++ (byte) bitmap_init::y + (bool~) bitmap_init::$12 ← (byte) bitmap_init::y != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) bitmap_init::$12) goto bitmap_init::@3 + to:bitmap_init::@8 +bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3 + (word/signed word/dword/signed dword~) bitmap_init::$10 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*~) bitmap_init::$11 ← (byte*) bitmap_init::yoffs + (word/signed word/dword/signed dword~) bitmap_init::$10 + (byte*) bitmap_init::yoffs ← (byte*~) bitmap_init::$11 + to:bitmap_init::@4 +bitmap_init::@8: scope:[bitmap_init] from bitmap_init::@4 + to:bitmap_init::@return +bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@8 + return + to:@return +@7: scope:[] from @6 + to:@8 +bitmap_clear: scope:[bitmap_clear] from + (byte*~) bitmap_clear::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_yhi + (byte/signed byte/word/signed word/dword/signed dword) 0), *((byte[256]) bitmap_plot_ylo + (byte/signed byte/word/signed word/dword/signed dword) 0) } + (byte*) bitmap_clear::bitmap ← (byte*~) bitmap_clear::$0 + (byte) bitmap_clear::y ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:bitmap_clear::@1 +bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 + (byte) bitmap_clear::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:bitmap_clear::@2 +bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 + *((byte*) bitmap_clear::bitmap) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*) bitmap_clear::bitmap ← ++ (byte*) bitmap_clear::bitmap + (byte) bitmap_clear::x ← ++ (byte) bitmap_clear::x + (bool~) bitmap_clear::$1 ← (byte) bitmap_clear::x != (byte/word/signed word/dword/signed dword) 200 + if((bool~) bitmap_clear::$1) goto bitmap_clear::@2 + to:bitmap_clear::@3 +bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 + (byte) bitmap_clear::y ← ++ (byte) bitmap_clear::y + (bool~) bitmap_clear::$2 ← (byte) bitmap_clear::y != (byte/signed byte/word/signed word/dword/signed dword) 40 + if((bool~) bitmap_clear::$2) goto bitmap_clear::@1 + to:bitmap_clear::@4 +bitmap_clear::@4: scope:[bitmap_clear] from bitmap_clear::@3 + to:bitmap_clear::@return +bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@4 + return + to:@return +@8: scope:[] from @7 + to:@9 +bitmap_plot: scope:[bitmap_plot] from + (byte*~) bitmap_plot::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_yhi + (byte) bitmap_plot::y), *((byte[256]) bitmap_plot_ylo + (byte) bitmap_plot::y) } + (byte*) bitmap_plot::plotter ← (byte*~) bitmap_plot::$0 + (word~) bitmap_plot::$1 ← (word) bitmap_plot::x & (word/dword/signed dword) 65528 + (byte*) bitmap_plot::plotter ← (byte*) bitmap_plot::plotter + (word~) bitmap_plot::$1 + (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x + *((byte*) bitmap_plot::plotter) ← *((byte*) bitmap_plot::plotter) | *((byte[256]) bitmap_plot_bit + (byte~) bitmap_plot::$2) + to:bitmap_plot::@return +bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot + return + to:@return +@9: scope:[] from @8 call main to:@end -@end: scope:[] from @2 +@end: scope:[] from @9 -Eliminating unused variable (byte) SIZE and assignment [0] (byte) SIZE ← (byte/signed byte/word/signed word/dword/signed dword) 4 -Eliminating unused variable (word[4]) x_end and assignment [3] (word[4]) x_end ← { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20 } -Eliminating unused variable (byte[4]) y_end and assignment [4] (byte[4]) y_end ← { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 } -Eliminating unused variable (signed byte[4]) x_add and assignment [7] (signed byte[4]) x_add ← { fill( 4, 0) } -Eliminating unused variable (signed byte[4]) y_add and assignment [8] (signed byte[4]) y_add ← { fill( 4, 0) } -Eliminating unused variable (byte[4]) delay and assignment [9] (byte[4]) delay ← { fill( 4, 0) } -Eliminating unused variable (byte[4]) frame and assignment [10] (byte[4]) frame ← { fill( 4, 0) } -Eliminating unused variable - keeping the call (void~) main::$0 -Removing empty block main::@2 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Inlined call call vicSelectGfxBank (byte*) SCREEN +Inlined call (byte~) main::$4 ← call toD018 (byte*) SCREEN (byte*) BITMAP +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank +Eliminating unused variable (byte) PROCPORT_RAM_ALL and assignment [3] (byte) PROCPORT_RAM_ALL ← (byte/signed byte/word/signed word/dword/signed dword) 48 +Eliminating unused variable (byte) PROCPORT_RAM_CHARROM and assignment [5] (byte) PROCPORT_RAM_CHARROM ← (byte/signed byte/word/signed word/dword/signed dword) 49 +Eliminating unused variable (byte) PROCPORT_KERNEL_IO and assignment [6] (byte) PROCPORT_KERNEL_IO ← (byte/signed byte/word/signed word/dword/signed dword) 54 +Eliminating unused variable (byte) PROCPORT_BASIC_KERNEL_IO and assignment [7] (byte) PROCPORT_BASIC_KERNEL_IO ← (byte/signed byte/word/signed word/dword/signed dword) 55 +Eliminating unused variable (byte*) CHARGEN and assignment [8] (byte*) CHARGEN ← ((byte*)) (word/dword/signed dword) 53248 +Eliminating unused variable (byte*) SPRITES_XPOS and assignment [9] (byte*) SPRITES_XPOS ← ((byte*)) (word/dword/signed dword) 53248 +Eliminating unused variable (byte*) SPRITES_YPOS and assignment [10] (byte*) SPRITES_YPOS ← ((byte*)) (word/dword/signed dword) 53249 +Eliminating unused variable (byte*) SPRITES_XMSB and assignment [11] (byte*) SPRITES_XMSB ← ((byte*)) (word/dword/signed dword) 53264 +Eliminating unused variable (byte*) RASTER and assignment [12] (byte*) RASTER ← ((byte*)) (word/dword/signed dword) 53266 +Eliminating unused variable (byte*) SPRITES_ENABLE and assignment [13] (byte*) SPRITES_ENABLE ← ((byte*)) (word/dword/signed dword) 53269 +Eliminating unused variable (byte*) SPRITES_EXPAND_Y and assignment [14] (byte*) SPRITES_EXPAND_Y ← ((byte*)) (word/dword/signed dword) 53271 +Eliminating unused variable (byte*) SPRITES_PRIORITY and assignment [15] (byte*) SPRITES_PRIORITY ← ((byte*)) (word/dword/signed dword) 53275 +Eliminating unused variable (byte*) SPRITES_MC and assignment [16] (byte*) SPRITES_MC ← ((byte*)) (word/dword/signed dword) 53276 +Eliminating unused variable (byte*) SPRITES_EXPAND_X and assignment [17] (byte*) SPRITES_EXPAND_X ← ((byte*)) (word/dword/signed dword) 53277 +Eliminating unused variable (byte*) BGCOL and assignment [19] (byte*) BGCOL ← ((byte*)) (word/dword/signed dword) 53281 +Eliminating unused variable (byte*) BGCOL1 and assignment [20] (byte*) BGCOL1 ← ((byte*)) (word/dword/signed dword) 53281 +Eliminating unused variable (byte*) BGCOL2 and assignment [21] (byte*) BGCOL2 ← ((byte*)) (word/dword/signed dword) 53282 +Eliminating unused variable (byte*) BGCOL3 and assignment [22] (byte*) BGCOL3 ← ((byte*)) (word/dword/signed dword) 53283 +Eliminating unused variable (byte*) BGCOL4 and assignment [23] (byte*) BGCOL4 ← ((byte*)) (word/dword/signed dword) 53284 +Eliminating unused variable (byte*) SPRITES_MC1 and assignment [24] (byte*) SPRITES_MC1 ← ((byte*)) (word/dword/signed dword) 53285 +Eliminating unused variable (byte*) SPRITES_MC2 and assignment [25] (byte*) SPRITES_MC2 ← ((byte*)) (word/dword/signed dword) 53286 +Eliminating unused variable (byte*) SPRITES_COLS and assignment [26] (byte*) SPRITES_COLS ← ((byte*)) (word/dword/signed dword) 53287 +Eliminating unused variable (byte*) VIC_CONTROL and assignment [27] (byte*) VIC_CONTROL ← ((byte*)) (word/dword/signed dword) 53265 +Eliminating unused variable (byte) VIC_RST8 and assignment [29] (byte) VIC_RST8 ← (byte/word/signed word/dword/signed dword) 128 +Eliminating unused variable (byte) VIC_ECM and assignment [30] (byte) VIC_ECM ← (byte/signed byte/word/signed word/dword/signed dword) 64 +Eliminating unused variable (byte*) VIC_CONTROL2 and assignment [34] (byte*) VIC_CONTROL2 ← ((byte*)) (word/dword/signed dword) 53270 +Eliminating unused variable (byte*) D016 and assignment [35] (byte*) D016 ← ((byte*)) (word/dword/signed dword) 53270 +Eliminating unused variable (byte) VIC_MCM and assignment [36] (byte) VIC_MCM ← (byte/signed byte/word/signed word/dword/signed dword) 16 +Eliminating unused variable (byte) VIC_CSEL and assignment [37] (byte) VIC_CSEL ← (byte/signed byte/word/signed word/dword/signed dword) 8 +Eliminating unused variable (byte*) VIC_MEMORY and assignment [39] (byte*) VIC_MEMORY ← ((byte*)) (word/dword/signed dword) 53272 +Eliminating unused variable (byte*) COLS and assignment [40] (byte*) COLS ← ((byte*)) (word/dword/signed dword) 55296 +Eliminating unused variable (byte*) CIA1_PORT_A and assignment [41] (byte*) CIA1_PORT_A ← ((byte*)) (word/dword/signed dword) 56320 +Eliminating unused variable (byte*) CIA1_PORT_B and assignment [42] (byte*) CIA1_PORT_B ← ((byte*)) (word/dword/signed dword) 56321 +Eliminating unused variable (byte*) CIA1_PORT_A_DDR and assignment [43] (byte*) CIA1_PORT_A_DDR ← ((byte*)) (word/dword/signed dword) 56322 +Eliminating unused variable (byte*) CIA1_PORT_B_DDR and assignment [44] (byte*) CIA1_PORT_B_DDR ← ((byte*)) (word/dword/signed dword) 56323 +Eliminating unused variable (byte*) CIA2_PORT_B and assignment [46] (byte*) CIA2_PORT_B ← ((byte*)) (word/dword/signed dword) 56577 +Eliminating unused variable (byte*) CIA2_PORT_B_DDR and assignment [48] (byte*) CIA2_PORT_B_DDR ← ((byte*)) (word/dword/signed dword) 56579 +Eliminating unused variable (byte) BLACK and assignment [49] (byte) BLACK ← (byte/signed byte/word/signed word/dword/signed dword) 0 +Eliminating unused variable (byte) WHITE and assignment [50] (byte) WHITE ← (byte/signed byte/word/signed word/dword/signed dword) 1 +Eliminating unused variable (byte) RED and assignment [51] (byte) RED ← (byte/signed byte/word/signed word/dword/signed dword) 2 +Eliminating unused variable (byte) CYAN and assignment [52] (byte) CYAN ← (byte/signed byte/word/signed word/dword/signed dword) 3 +Eliminating unused variable (byte) PURPLE and assignment [53] (byte) PURPLE ← (byte/signed byte/word/signed word/dword/signed dword) 4 +Eliminating unused variable (byte) GREEN and assignment [54] (byte) GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 5 +Eliminating unused variable (byte) BLUE and assignment [55] (byte) BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 6 +Eliminating unused variable (byte) YELLOW and assignment [56] (byte) YELLOW ← (byte/signed byte/word/signed word/dword/signed dword) 7 +Eliminating unused variable (byte) ORANGE and assignment [57] (byte) ORANGE ← (byte/signed byte/word/signed word/dword/signed dword) 8 +Eliminating unused variable (byte) BROWN and assignment [58] (byte) BROWN ← (byte/signed byte/word/signed word/dword/signed dword) 9 +Eliminating unused variable (byte) PINK and assignment [59] (byte) PINK ← (byte/signed byte/word/signed word/dword/signed dword) 10 +Eliminating unused variable (byte) DARK_GREY and assignment [60] (byte) DARK_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 11 +Eliminating unused variable (byte) GREY and assignment [61] (byte) GREY ← (byte/signed byte/word/signed word/dword/signed dword) 12 +Eliminating unused variable (byte) LIGHT_GREEN and assignment [62] (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 +Eliminating unused variable (byte) LIGHT_BLUE and assignment [63] (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 +Eliminating unused variable (byte) LIGHT_GREY and assignment [64] (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 +Eliminating unused variable (byte) SIZE and assignment [67] (byte) SIZE ← (byte/signed byte/word/signed word/dword/signed dword) 4 +Eliminating unused variable (word[4]) x_end and assignment [71] (word[4]) x_end ← { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20 } +Eliminating unused variable (byte[4]) y_end and assignment [72] (byte[4]) y_end ← { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 } +Eliminating unused variable (signed byte[4]) x_add and assignment [75] (signed byte[4]) x_add ← { fill( 4, 0) } +Eliminating unused variable (signed byte[4]) y_add and assignment [76] (signed byte[4]) y_add ← { fill( 4, 0) } +Eliminating unused variable (byte[4]) frame and assignment [78] (byte[4]) frame ← { fill( 4, 0) } +Eliminating unused variable - keeping the call (void~) main::$5 +Eliminating unused variable - keeping the call (void~) main::$6 +Eliminating unused variable - keeping the call (void~) main::$7 +Eliminating unused variable - keeping the call (void~) main::$8 +Eliminating unused variable - keeping the call (void~) main::$10 Removing empty block @1 +Removing empty block @2 +Removing empty block main::vicSelectGfxBank1_toDd001_@1 +Removing empty block main::vicSelectGfxBank1_@return +Removing empty block main::toD0181_@1 +Removing empty block main::@5 +Removing empty block main::@6 +Removing empty block main::@4 +Removing empty block main::@7 +Removing empty block main::@8 +Removing empty block @4 +Removing empty block @5 +Removing empty block screen_fill::@4 +Removing empty block bitmap_init::@8 +Removing empty block @7 +Removing empty block bitmap_clear::@4 +Removing empty block @8 PROCEDURE MODIFY VARIABLE ANALYSIS +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + to:@3 +@3: scope:[] from @begin + (byte*) BITMAP#0 ← ((byte*)) (word/dword/signed dword) 40960 + (byte*) SCREEN#0 ← ((byte*)) (word/dword/signed dword) 34816 + (byte) DELAY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (word[4]) x_start#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 30, (byte/signed byte/word/signed word/dword/signed dword) 30 } (byte[4]) y_start#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 } (word[4]) x_cur#0 ← { fill( 4, 0) } (word[4]) y_cur#0 ← { fill( 4, 0) } - to:@2 -main: scope:[main] from @2 + (byte[4]) delay#0 ← { fill( 4, 0) } + to:@6 +main: scope:[main] from @9 + (byte*) BITMAP#9 ← phi( @9/(byte*) BITMAP#10 ) + (byte*) SCREEN#1 ← phi( @9/(byte*) SCREEN#4 ) + asm { sei } + *((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0 + *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0 + (byte~) main::$0 ← (byte) VIC_BMM#0 | (byte) VIC_DEN#0 + (byte~) main::$1 ← (byte~) main::$0 | (byte) VIC_RSEL#0 + (byte/word/dword~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word/dword/signed dword) 3 + *((byte*) D011#0) ← (byte/word/dword~) main::$2 + (byte*) main::vicSelectGfxBank1_gfx#0 ← (byte*) SCREEN#1 + to:main::vicSelectGfxBank1 +main::vicSelectGfxBank1: scope:[main] from main + (byte*) BITMAP#8 ← phi( main/(byte*) BITMAP#9 ) + (byte*) SCREEN#12 ← phi( main/(byte*) SCREEN#1 ) + (byte*) main::vicSelectGfxBank1_gfx#1 ← phi( main/(byte*) main::vicSelectGfxBank1_gfx#0 ) + *((byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) main::vicSelectGfxBank1_gfx#1 + to:main::vicSelectGfxBank1_toDd001 +main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 + (byte*) BITMAP#7 ← phi( main::vicSelectGfxBank1/(byte*) BITMAP#8 ) + (byte*) SCREEN#10 ← phi( main::vicSelectGfxBank1/(byte*) SCREEN#12 ) + (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 ← phi( main::vicSelectGfxBank1/(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ) + (word) main::vicSelectGfxBank1_toDd001_$0#0 ← ((word)) (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 + (byte) main::vicSelectGfxBank1_toDd001_$1#0 ← > (word) main::vicSelectGfxBank1_toDd001_$0#0 + (byte) main::vicSelectGfxBank1_toDd001_$2#0 ← (byte) main::vicSelectGfxBank1_toDd001_$1#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte) main::vicSelectGfxBank1_toDd001_$2#0 + (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 + to:main::vicSelectGfxBank1_toDd001_@return +main::vicSelectGfxBank1_toDd001_@return: scope:[main] from main::vicSelectGfxBank1_toDd001 + (byte*) BITMAP#5 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) BITMAP#7 ) + (byte*) SCREEN#7 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) SCREEN#10 ) + (byte) main::vicSelectGfxBank1_toDd001_return#2 ← phi( main::vicSelectGfxBank1_toDd001/(byte) main::vicSelectGfxBank1_toDd001_return#0 ) + (byte) main::vicSelectGfxBank1_toDd001_return#1 ← (byte) main::vicSelectGfxBank1_toDd001_return#2 + to:main::vicSelectGfxBank1_@1 +main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001_@return + (byte*) BITMAP#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) BITMAP#5 ) + (byte*) SCREEN#5 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) SCREEN#7 ) + (byte) main::vicSelectGfxBank1_toDd001_return#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte) main::vicSelectGfxBank1_toDd001_return#1 ) + (byte) main::vicSelectGfxBank1_$0#0 ← (byte) main::vicSelectGfxBank1_toDd001_return#3 + *((byte*) CIA2_PORT_A#0) ← (byte) main::vicSelectGfxBank1_$0#0 + to:main::@9 +main::@9: scope:[main] from main::vicSelectGfxBank1_@1 + (byte*) BITMAP#1 ← phi( main::vicSelectGfxBank1_@1/(byte*) BITMAP#3 ) + (byte*) SCREEN#2 ← phi( main::vicSelectGfxBank1_@1/(byte*) SCREEN#5 ) + (byte*) main::toD0181_screen#0 ← (byte*) SCREEN#2 + (byte*) main::toD0181_gfx#0 ← (byte*) BITMAP#1 + to:main::toD0181 +main::toD0181: scope:[main] from main::@9 + (byte*) SCREEN#13 ← phi( main::@9/(byte*) SCREEN#2 ) + (byte*) BITMAP#6 ← phi( main::@9/(byte*) BITMAP#1 ) + (byte*) main::toD0181_gfx#1 ← phi( main::@9/(byte*) main::toD0181_gfx#0 ) + (byte*) main::toD0181_screen#1 ← phi( main::@9/(byte*) main::toD0181_screen#0 ) + (word) main::toD0181_$0#0 ← ((word)) (byte*) main::toD0181_screen#1 + (word) main::toD0181_$1#0 ← (word) main::toD0181_$0#0 & (word/signed word/dword/signed dword) 16383 + (word) main::toD0181_$2#0 ← (word) main::toD0181_$1#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::toD0181_$3#0 ← > (word) main::toD0181_$2#0 + (word) main::toD0181_$4#0 ← ((word)) (byte*) main::toD0181_gfx#1 + (byte) main::toD0181_$5#0 ← > (word) main::toD0181_$4#0 + (byte) main::toD0181_$6#0 ← (byte) main::toD0181_$5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::toD0181_$7#0 ← (byte) main::toD0181_$6#0 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte) main::toD0181_$8#0 ← (byte) main::toD0181_$3#0 | (byte) main::toD0181_$7#0 + (byte) main::toD0181_return#0 ← (byte) main::toD0181_$8#0 + to:main::toD0181_@return +main::toD0181_@return: scope:[main] from main::toD0181 + (byte*) SCREEN#11 ← phi( main::toD0181/(byte*) SCREEN#13 ) + (byte*) BITMAP#4 ← phi( main::toD0181/(byte*) BITMAP#6 ) + (byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 ) + (byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2 + to:main::@10 +main::@10: scope:[main] from main::toD0181_@return + (byte*) SCREEN#8 ← phi( main::toD0181_@return/(byte*) SCREEN#11 ) + (byte*) BITMAP#2 ← phi( main::toD0181_@return/(byte*) BITMAP#4 ) + (byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 ) + (byte~) main::$4 ← (byte) main::toD0181_return#3 + *((byte*) D018#0) ← (byte~) main::$4 + (byte*) bitmap_init::bitmap#0 ← (byte*) BITMAP#2 + call bitmap_init + to:main::@11 +main::@11: scope:[main] from main::@10 + (byte*) SCREEN#6 ← phi( main::@10/(byte*) SCREEN#8 ) + call bitmap_clear + to:main::@12 +main::@12: scope:[main] from main::@11 + (byte*) SCREEN#3 ← phi( main::@11/(byte*) SCREEN#6 ) + (byte*) screen_fill::screen#0 ← (byte*) SCREEN#3 + (byte) screen_fill::ch#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + call screen_fill + to:main::@13 +main::@13: scope:[main] from main::@12 (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 -main::@1: scope:[main] from main main::@3 - (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 ) - (byte) init::point_idx#0 ← (byte) main::i#2 - call init - to:main::@3 -main::@3: scope:[main] from main::@1 +main::@1: scope:[main] from main::@13 main::@15 + (byte) main::i#2 ← phi( main::@13/(byte) main::i#0 main::@15/(byte) main::i#1 ) + (byte) point_init::point_idx#0 ← (byte) main::i#2 + call point_init + to:main::@14 +main::@14: scope:[main] from main::@1 (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) - (byte) main::i#1 ← (byte) main::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (bool~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 8 - if((bool~) main::$1) goto main::@1 + (byte~) main::$9 ← (byte) main::i#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) bitmap_plot::x#0 ← *((word[4]) x_start#0 + (byte) main::i#3) + (byte) bitmap_plot::y#0 ← *((byte[4]) y_start#0 + (byte~) main::$9) + call bitmap_plot + to:main::@15 +main::@15: scope:[main] from main::@14 + (byte) main::i#4 ← phi( main::@14/(byte) main::i#3 ) + (byte) main::i#1 ← (byte) main::i#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (bool~) main::$11 ← (byte) main::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 8 + if((bool~) main::$11) goto main::@1 + to:main::@2 +main::@2: scope:[main] from main::@15 main::@3 + if(true) goto main::@3 to:main::@return -main::@return: scope:[main] from main::@3 +main::@3: scope:[main] from main::@2 + *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0) + to:main::@2 +main::@return: scope:[main] from main::@2 return to:@return -init: scope:[init] from main::@1 - (byte) init::point_idx#1 ← phi( main::@1/(byte) init::point_idx#0 ) - (word~) init::$0 ← *((word[4]) x_start#0 + (byte) init::point_idx#1) << (byte/signed byte/word/signed word/dword/signed dword) 4 - *((word[4]) x_cur#0 + (byte) init::point_idx#1) ← (word~) init::$0 - (byte~) init::$1 ← (byte) init::point_idx#1 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - (word~) init::$2 ← ((word)) *((byte[4]) y_start#0 + (byte~) init::$1) - (word~) init::$3 ← (word~) init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 - *((word[4]) y_cur#0 + (byte) init::point_idx#1) ← (word~) init::$3 - to:init::@return -init::@return: scope:[init] from init +point_init: scope:[point_init] from main::@1 + (byte) point_init::point_idx#1 ← phi( main::@1/(byte) point_init::point_idx#0 ) + (word~) point_init::$0 ← *((word[4]) x_start#0 + (byte) point_init::point_idx#1) << (byte/signed byte/word/signed word/dword/signed dword) 4 + *((word[4]) x_cur#0 + (byte) point_init::point_idx#1) ← (word~) point_init::$0 + (byte~) point_init::$1 ← (byte) point_init::point_idx#1 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) point_init::$2 ← ((word)) *((byte[4]) y_start#0 + (byte~) point_init::$1) + (word~) point_init::$3 ← (word~) point_init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 + *((word[4]) y_cur#0 + (byte) point_init::point_idx#1) ← (word~) point_init::$3 + (byte~) point_init::$4 ← (byte) point_init::point_idx#1 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + *((byte[4]) delay#0 + (byte~) point_init::$4) ← (byte) DELAY#0 + to:point_init::@return +point_init::@return: scope:[point_init] from point_init return to:@return -@2: scope:[] from @begin +screen_fill: scope:[screen_fill] from main::@12 + (byte*) screen_fill::screen#4 ← phi( main::@12/(byte*) screen_fill::screen#0 ) + (byte) screen_fill::ch#3 ← phi( main::@12/(byte) screen_fill::ch#0 ) + (byte) screen_fill::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:screen_fill::@1 +screen_fill::@1: scope:[screen_fill] from screen_fill screen_fill::@3 + (byte) screen_fill::y#4 ← phi( screen_fill/(byte) screen_fill::y#0 screen_fill::@3/(byte) screen_fill::y#1 ) + (byte*) screen_fill::screen#3 ← phi( screen_fill/(byte*) screen_fill::screen#4 screen_fill::@3/(byte*) screen_fill::screen#5 ) + (byte) screen_fill::ch#2 ← phi( screen_fill/(byte) screen_fill::ch#3 screen_fill::@3/(byte) screen_fill::ch#4 ) + (byte) screen_fill::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:screen_fill::@2 +screen_fill::@2: scope:[screen_fill] from screen_fill::@1 screen_fill::@2 + (byte) screen_fill::y#3 ← phi( screen_fill::@1/(byte) screen_fill::y#4 screen_fill::@2/(byte) screen_fill::y#3 ) + (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte) screen_fill::x#0 screen_fill::@2/(byte) screen_fill::x#1 ) + (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 ) + (byte) screen_fill::ch#1 ← phi( screen_fill::@1/(byte) screen_fill::ch#2 screen_fill::@2/(byte) screen_fill::ch#1 ) + *((byte*) screen_fill::screen#2) ← (byte) screen_fill::ch#1 + (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 + (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 + (bool~) screen_fill::$0 ← (byte) screen_fill::x#1 != (byte/signed byte/word/signed word/dword/signed dword) 40 + if((bool~) screen_fill::$0) goto screen_fill::@2 + to:screen_fill::@3 +screen_fill::@3: scope:[screen_fill] from screen_fill::@2 + (byte*) screen_fill::screen#5 ← phi( screen_fill::@2/(byte*) screen_fill::screen#1 ) + (byte) screen_fill::ch#4 ← phi( screen_fill::@2/(byte) screen_fill::ch#1 ) + (byte) screen_fill::y#2 ← phi( screen_fill::@2/(byte) screen_fill::y#3 ) + (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#2 + (bool~) screen_fill::$1 ← (byte) screen_fill::y#1 != (byte/signed byte/word/signed word/dword/signed dword) 25 + if((bool~) screen_fill::$1) goto screen_fill::@1 + to:screen_fill::@return +screen_fill::@return: scope:[screen_fill] from screen_fill::@3 + return + to:@return +@6: scope:[] from @3 + (byte*) BITMAP#11 ← phi( @3/(byte*) BITMAP#0 ) + (byte*) SCREEN#9 ← phi( @3/(byte*) SCREEN#0 ) + (byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) } + (byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) } + (byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) } + to:@9 +bitmap_init: scope:[bitmap_init] from main::@10 + (byte*) bitmap_init::bitmap#5 ← phi( main::@10/(byte*) bitmap_init::bitmap#0 ) + (byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) bitmap_init::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:bitmap_init::@1 +bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 + (byte*) bitmap_init::bitmap#3 ← phi( bitmap_init/(byte*) bitmap_init::bitmap#5 bitmap_init::@2/(byte*) bitmap_init::bitmap#2 ) + (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) bitmap_init::x#0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) bitmap_init::bits#0 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + *((byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) bitmap_init::$1 ← ! (bool~) bitmap_init::$0 + if((bool~) bitmap_init::$1) goto bitmap_init::@2 + to:bitmap_init::@5 +bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@5 + (byte*) bitmap_init::bitmap#2 ← phi( bitmap_init::@1/(byte*) bitmap_init::bitmap#3 bitmap_init::@5/(byte*) bitmap_init::bitmap#4 ) + (byte) bitmap_init::bits#4 ← phi( bitmap_init::@1/(byte) bitmap_init::bits#1 bitmap_init::@5/(byte) bitmap_init::bits#2 ) + (byte) bitmap_init::x#3 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 bitmap_init::@5/(byte) bitmap_init::x#4 ) + (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#3 + (bool~) bitmap_init::$2 ← (byte) bitmap_init::x#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) bitmap_init::$2) goto bitmap_init::@1 + to:bitmap_init::@6 +bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@1 + (byte*) bitmap_init::bitmap#4 ← phi( bitmap_init::@1/(byte*) bitmap_init::bitmap#3 ) + (byte) bitmap_init::x#4 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 ) + (byte) bitmap_init::bits#2 ← (byte/word/signed word/dword/signed dword) 128 + to:bitmap_init::@2 +bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@2 + (byte*) bitmap_init::bitmap#1 ← phi( bitmap_init::@2/(byte*) bitmap_init::bitmap#2 ) + (byte*) bitmap_init::yoffs#0 ← (byte*) bitmap_init::bitmap#1 + (byte) bitmap_init::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:bitmap_init::@3 +bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@4 bitmap_init::@6 + (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@6/(byte*) bitmap_init::yoffs#0 ) + (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@6/(byte) bitmap_init::y#0 ) + (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 + *((byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + *((byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7 + (bool~) bitmap_init::$9 ← ! (bool~) bitmap_init::$8 + if((bool~) bitmap_init::$9) goto bitmap_init::@4 + to:bitmap_init::@7 +bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7 + (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) + (byte) bitmap_init::y#3 ← phi( bitmap_init::@3/(byte) bitmap_init::y#2 bitmap_init::@7/(byte) bitmap_init::y#4 ) + (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#3 + (bool~) bitmap_init::$12 ← (byte) bitmap_init::y#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) bitmap_init::$12) goto bitmap_init::@3 + to:bitmap_init::@return +bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3 + (byte) bitmap_init::y#4 ← phi( bitmap_init::@3/(byte) bitmap_init::y#2 ) + (byte*) bitmap_init::yoffs#3 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 ) + (word/signed word/dword/signed dword~) bitmap_init::$10 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*~) bitmap_init::$11 ← (byte*) bitmap_init::yoffs#3 + (word/signed word/dword/signed dword~) bitmap_init::$10 + (byte*) bitmap_init::yoffs#1 ← (byte*~) bitmap_init::$11 + to:bitmap_init::@4 +bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 + return + to:@return +bitmap_clear: scope:[bitmap_clear] from main::@11 + (byte*~) bitmap_clear::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_yhi#0 + (byte/signed byte/word/signed word/dword/signed dword) 0), *((byte[256]) bitmap_plot_ylo#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) } + (byte*) bitmap_clear::bitmap#0 ← (byte*~) bitmap_clear::$0 + (byte) bitmap_clear::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:bitmap_clear::@1 +bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 + (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte) bitmap_clear::y#0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) + (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*) bitmap_clear::bitmap#0 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#4 ) + (byte) bitmap_clear::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:bitmap_clear::@2 +bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 + (byte) bitmap_clear::y#3 ← phi( bitmap_clear::@1/(byte) bitmap_clear::y#4 bitmap_clear::@2/(byte) bitmap_clear::y#3 ) + (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte) bitmap_clear::x#0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) + (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) + *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 + (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 + (bool~) bitmap_clear::$1 ← (byte) bitmap_clear::x#1 != (byte/word/signed word/dword/signed dword) 200 + if((bool~) bitmap_clear::$1) goto bitmap_clear::@2 + to:bitmap_clear::@3 +bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 + (byte*) bitmap_clear::bitmap#4 ← phi( bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) + (byte) bitmap_clear::y#2 ← phi( bitmap_clear::@2/(byte) bitmap_clear::y#3 ) + (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#2 + (bool~) bitmap_clear::$2 ← (byte) bitmap_clear::y#1 != (byte/signed byte/word/signed word/dword/signed dword) 40 + if((bool~) bitmap_clear::$2) goto bitmap_clear::@1 + to:bitmap_clear::@return +bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 + return + to:@return +bitmap_plot: scope:[bitmap_plot] from main::@14 + (word) bitmap_plot::x#1 ← phi( main::@14/(word) bitmap_plot::x#0 ) + (byte) bitmap_plot::y#1 ← phi( main::@14/(byte) bitmap_plot::y#0 ) + (byte*~) bitmap_plot::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#1), *((byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#1) } + (byte*) bitmap_plot::plotter#0 ← (byte*~) bitmap_plot::$0 + (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#1 & (word/dword/signed dword) 65528 + (byte*) bitmap_plot::plotter#1 ← (byte*) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 + (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#1 + *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) + to:bitmap_plot::@return +bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot + return + to:@return +@9: scope:[] from @6 + (byte*) BITMAP#10 ← phi( @6/(byte*) BITMAP#11 ) + (byte*) SCREEN#4 ← phi( @6/(byte*) SCREEN#9 ) call main - to:@3 -@3: scope:[] from @2 + to:@10 +@10: scope:[] from @9 to:@end -@end: scope:[] from @3 +@end: scope:[] from @10 SYMBOL TABLE SSA -(label) @2 +(label) @10 (label) @3 +(label) @6 +(label) @9 (label) @begin (label) @end -(void()) init((byte) init::point_idx) -(word~) init::$0 -(byte~) init::$1 -(word~) init::$2 -(word~) init::$3 -(label) init::@return -(byte) init::point_idx -(byte) init::point_idx#0 -(byte) init::point_idx#1 +(byte*) BITMAP +(byte*) BITMAP#0 +(byte*) BITMAP#1 +(byte*) BITMAP#10 +(byte*) BITMAP#11 +(byte*) BITMAP#2 +(byte*) BITMAP#3 +(byte*) BITMAP#4 +(byte*) BITMAP#5 +(byte*) BITMAP#6 +(byte*) BITMAP#7 +(byte*) BITMAP#8 +(byte*) BITMAP#9 +(byte*) BORDERCOL +(byte*) BORDERCOL#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D018 +(byte*) D018#0 +(byte) DELAY +(byte) DELAY#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte*) SCREEN +(byte*) SCREEN#0 +(byte*) SCREEN#1 +(byte*) SCREEN#10 +(byte*) SCREEN#11 +(byte*) SCREEN#12 +(byte*) SCREEN#13 +(byte*) SCREEN#2 +(byte*) SCREEN#3 +(byte*) SCREEN#4 +(byte*) SCREEN#5 +(byte*) SCREEN#6 +(byte*) SCREEN#7 +(byte*) SCREEN#8 +(byte*) SCREEN#9 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(void()) bitmap_clear() +(byte*~) bitmap_clear::$0 +(bool~) bitmap_clear::$1 +(bool~) bitmap_clear::$2 +(label) bitmap_clear::@1 +(label) bitmap_clear::@2 +(label) bitmap_clear::@3 +(label) bitmap_clear::@return +(byte*) bitmap_clear::bitmap +(byte*) bitmap_clear::bitmap#0 +(byte*) bitmap_clear::bitmap#1 +(byte*) bitmap_clear::bitmap#2 +(byte*) bitmap_clear::bitmap#3 +(byte*) bitmap_clear::bitmap#4 +(byte) bitmap_clear::x +(byte) bitmap_clear::x#0 +(byte) bitmap_clear::x#1 +(byte) bitmap_clear::x#2 +(byte) bitmap_clear::y +(byte) bitmap_clear::y#0 +(byte) bitmap_clear::y#1 +(byte) bitmap_clear::y#2 +(byte) bitmap_clear::y#3 +(byte) bitmap_clear::y#4 +(void()) bitmap_init((byte*) bitmap_init::bitmap) +(bool~) bitmap_init::$0 +(bool~) bitmap_init::$1 +(word/signed word/dword/signed dword~) bitmap_init::$10 +(byte*~) bitmap_init::$11 +(bool~) bitmap_init::$12 +(bool~) bitmap_init::$2 +(byte~) bitmap_init::$3 +(byte~) bitmap_init::$4 +(byte~) bitmap_init::$5 +(byte~) bitmap_init::$6 +(byte~) bitmap_init::$7 +(bool~) bitmap_init::$8 +(bool~) bitmap_init::$9 +(label) bitmap_init::@1 +(label) bitmap_init::@2 +(label) bitmap_init::@3 +(label) bitmap_init::@4 +(label) bitmap_init::@5 +(label) bitmap_init::@6 +(label) bitmap_init::@7 +(label) bitmap_init::@return +(byte*) bitmap_init::bitmap +(byte*) bitmap_init::bitmap#0 +(byte*) bitmap_init::bitmap#1 +(byte*) bitmap_init::bitmap#2 +(byte*) bitmap_init::bitmap#3 +(byte*) bitmap_init::bitmap#4 +(byte*) bitmap_init::bitmap#5 +(byte) bitmap_init::bits +(byte) bitmap_init::bits#0 +(byte) bitmap_init::bits#1 +(byte) bitmap_init::bits#2 +(byte) bitmap_init::bits#3 +(byte) bitmap_init::bits#4 +(byte) bitmap_init::x +(byte) bitmap_init::x#0 +(byte) bitmap_init::x#1 +(byte) bitmap_init::x#2 +(byte) bitmap_init::x#3 +(byte) bitmap_init::x#4 +(byte) bitmap_init::y +(byte) bitmap_init::y#0 +(byte) bitmap_init::y#1 +(byte) bitmap_init::y#2 +(byte) bitmap_init::y#3 +(byte) bitmap_init::y#4 +(byte*) bitmap_init::yoffs +(byte*) bitmap_init::yoffs#0 +(byte*) bitmap_init::yoffs#1 +(byte*) bitmap_init::yoffs#2 +(byte*) bitmap_init::yoffs#3 +(byte*) bitmap_init::yoffs#4 +(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) +(byte*~) bitmap_plot::$0 +(word~) bitmap_plot::$1 +(byte~) bitmap_plot::$2 +(label) bitmap_plot::@return +(byte*) bitmap_plot::plotter +(byte*) bitmap_plot::plotter#0 +(byte*) bitmap_plot::plotter#1 +(word) bitmap_plot::x +(word) bitmap_plot::x#0 +(word) bitmap_plot::x#1 +(byte) bitmap_plot::y +(byte) bitmap_plot::y#0 +(byte) bitmap_plot::y#1 +(byte[256]) bitmap_plot_bit +(byte[256]) bitmap_plot_bit#0 +(byte[256]) bitmap_plot_yhi +(byte[256]) bitmap_plot_yhi#0 +(byte[256]) bitmap_plot_ylo +(byte[256]) bitmap_plot_ylo#0 +(byte[4]) delay +(byte[4]) delay#0 (void()) main() -(bool~) main::$1 +(byte~) main::$0 +(byte~) main::$1 +(bool~) main::$11 +(byte/word/dword~) main::$2 +(byte~) main::$4 +(byte~) main::$9 (label) main::@1 +(label) main::@10 +(label) main::@11 +(label) main::@12 +(label) main::@13 +(label) main::@14 +(label) main::@15 +(label) main::@2 (label) main::@3 +(label) main::@9 (label) main::@return (byte) main::i (byte) main::i#0 (byte) main::i#1 (byte) main::i#2 (byte) main::i#3 +(byte) main::i#4 +(label) main::toD0181 +(word~) main::toD0181_$0 +(word) main::toD0181_$0#0 +(word~) main::toD0181_$1 +(word) main::toD0181_$1#0 +(word~) main::toD0181_$2 +(word) main::toD0181_$2#0 +(byte~) main::toD0181_$3 +(byte) main::toD0181_$3#0 +(word~) main::toD0181_$4 +(word) main::toD0181_$4#0 +(byte~) main::toD0181_$5 +(byte) main::toD0181_$5#0 +(byte~) main::toD0181_$6 +(byte) main::toD0181_$6#0 +(byte~) main::toD0181_$7 +(byte) main::toD0181_$7#0 +(byte~) main::toD0181_$8 +(byte) main::toD0181_$8#0 +(label) main::toD0181_@return +(byte*) main::toD0181_gfx +(byte*) main::toD0181_gfx#0 +(byte*) main::toD0181_gfx#1 +(byte) main::toD0181_return +(byte) main::toD0181_return#0 +(byte) main::toD0181_return#1 +(byte) main::toD0181_return#2 +(byte) main::toD0181_return#3 +(byte*) main::toD0181_screen +(byte*) main::toD0181_screen#0 +(byte*) main::toD0181_screen#1 +(label) main::vicSelectGfxBank1 +(byte~) main::vicSelectGfxBank1_$0 +(byte) main::vicSelectGfxBank1_$0#0 +(label) main::vicSelectGfxBank1_@1 +(byte*) main::vicSelectGfxBank1_gfx +(byte*) main::vicSelectGfxBank1_gfx#0 +(byte*) main::vicSelectGfxBank1_gfx#1 +(label) main::vicSelectGfxBank1_toDd001 +(word~) main::vicSelectGfxBank1_toDd001_$0 +(word) main::vicSelectGfxBank1_toDd001_$0#0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(byte) main::vicSelectGfxBank1_toDd001_$1#0 +(byte~) main::vicSelectGfxBank1_toDd001_$2 +(byte) main::vicSelectGfxBank1_toDd001_$2#0 +(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3 +(byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 +(label) main::vicSelectGfxBank1_toDd001_@return +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 +(byte*) main::vicSelectGfxBank1_toDd001_gfx#1 +(byte) main::vicSelectGfxBank1_toDd001_return +(byte) main::vicSelectGfxBank1_toDd001_return#0 +(byte) main::vicSelectGfxBank1_toDd001_return#1 +(byte) main::vicSelectGfxBank1_toDd001_return#2 +(byte) main::vicSelectGfxBank1_toDd001_return#3 +(void()) point_init((byte) point_init::point_idx) +(word~) point_init::$0 +(byte~) point_init::$1 +(word~) point_init::$2 +(word~) point_init::$3 +(byte~) point_init::$4 +(label) point_init::@return +(byte) point_init::point_idx +(byte) point_init::point_idx#0 +(byte) point_init::point_idx#1 +(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch) +(bool~) screen_fill::$0 +(bool~) screen_fill::$1 +(label) screen_fill::@1 +(label) screen_fill::@2 +(label) screen_fill::@3 +(label) screen_fill::@return +(byte) screen_fill::ch +(byte) screen_fill::ch#0 +(byte) screen_fill::ch#1 +(byte) screen_fill::ch#2 +(byte) screen_fill::ch#3 +(byte) screen_fill::ch#4 +(byte*) screen_fill::screen +(byte*) screen_fill::screen#0 +(byte*) screen_fill::screen#1 +(byte*) screen_fill::screen#2 +(byte*) screen_fill::screen#3 +(byte*) screen_fill::screen#4 +(byte*) screen_fill::screen#5 +(byte) screen_fill::x +(byte) screen_fill::x#0 +(byte) screen_fill::x#1 +(byte) screen_fill::x#2 +(byte) screen_fill::y +(byte) screen_fill::y#0 +(byte) screen_fill::y#1 +(byte) screen_fill::y#2 +(byte) screen_fill::y#3 +(byte) screen_fill::y#4 (word[4]) x_cur (word[4]) x_cur#0 (word[4]) x_start @@ -205,54 +1490,333 @@ SYMBOL TABLE SSA (byte[4]) y_start#0 OPTIMIZING CONTROL FLOW GRAPH -Culled Empty Block (label) @3 +Culled Empty Block (label) @10 Succesful SSA optimization Pass2CullEmptyBlocks -Not aliassing across scopes: init::point_idx#0 main::i#2 -Not aliassing across scopes: init::point_idx#1 init::point_idx#0 -Alias (byte) main::i#2 = (byte) main::i#3 +Inversing boolean not (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte/signed byte/word/signed word/dword/signed dword) 7 from (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7 +Succesful SSA optimization Pass2UnaryNotSimplification +Not aliassing across scopes: SCREEN#1 SCREEN#4 +Not aliassing across scopes: BITMAP#9 BITMAP#10 +Not aliassing across scopes: main::vicSelectGfxBank1_gfx#0 SCREEN#1 +Not aliassing across scopes: main::toD0181_screen#0 SCREEN#2 +Not aliassing across scopes: main::toD0181_gfx#0 BITMAP#1 +Not aliassing across scopes: bitmap_init::bitmap#0 BITMAP#2 +Not aliassing across scopes: screen_fill::screen#0 SCREEN#3 +Not aliassing across scopes: point_init::point_idx#0 main::i#2 +Not aliassing across scopes: point_init::point_idx#1 point_init::point_idx#0 +Not aliassing across scopes: screen_fill::ch#3 screen_fill::ch#0 +Not aliassing across scopes: screen_fill::screen#4 screen_fill::screen#0 +Not aliassing across scopes: bitmap_init::bitmap#5 bitmap_init::bitmap#0 +Not aliassing across scopes: bitmap_plot::y#1 bitmap_plot::y#0 +Not aliassing across scopes: bitmap_plot::x#1 bitmap_plot::x#0 +Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 +Alias (byte*) SCREEN#1 = (byte*) SCREEN#12 (byte*) SCREEN#10 (byte*) SCREEN#7 (byte*) SCREEN#5 (byte*) SCREEN#2 (byte*) SCREEN#13 (byte*) SCREEN#11 (byte*) SCREEN#8 (byte*) SCREEN#6 (byte*) SCREEN#3 +Alias (byte*) BITMAP#1 = (byte*) BITMAP#8 (byte*) BITMAP#9 (byte*) BITMAP#7 (byte*) BITMAP#5 (byte*) BITMAP#3 (byte*) BITMAP#6 (byte*) BITMAP#4 (byte*) BITMAP#2 +Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte) main::vicSelectGfxBank1_$0#0 +Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 +Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 +Alias (byte) main::toD0181_return#0 = (byte) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$4 +Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 +Alias (byte) screen_fill::y#2 = (byte) screen_fill::y#3 +Alias (byte) screen_fill::ch#1 = (byte) screen_fill::ch#4 +Alias (byte*) screen_fill::screen#1 = (byte*) screen_fill::screen#5 +Alias (byte*) SCREEN#0 = (byte*) SCREEN#9 (byte*) SCREEN#4 +Alias (byte*) BITMAP#0 = (byte*) BITMAP#11 (byte*) BITMAP#10 +Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 +Alias (byte*) bitmap_init::bitmap#3 = (byte*) bitmap_init::bitmap#4 +Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#2 (byte*) bitmap_init::yoffs#0 +Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3 +Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4 +Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$11 +Alias (byte*) bitmap_clear::bitmap#0 = (byte*~) bitmap_clear::$0 +Alias (byte) bitmap_clear::y#2 = (byte) bitmap_clear::y#3 +Alias (byte*) bitmap_clear::bitmap#1 = (byte*) bitmap_clear::bitmap#4 +Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0 Succesful SSA optimization Pass2AliasElimination -Not aliassing across scopes: init::point_idx#0 main::i#2 -Not aliassing across scopes: init::point_idx#1 init::point_idx#0 -Redundant Phi (byte) init::point_idx#1 (byte) init::point_idx#0 +Not aliassing across scopes: SCREEN#1 SCREEN#0 +Not aliassing across scopes: BITMAP#1 BITMAP#0 +Not aliassing across scopes: main::vicSelectGfxBank1_gfx#0 SCREEN#1 +Not aliassing across scopes: main::toD0181_screen#0 SCREEN#1 +Not aliassing across scopes: main::toD0181_gfx#0 BITMAP#1 +Not aliassing across scopes: bitmap_init::bitmap#0 BITMAP#1 +Not aliassing across scopes: screen_fill::screen#0 SCREEN#1 +Not aliassing across scopes: point_init::point_idx#0 main::i#2 +Not aliassing across scopes: point_init::point_idx#1 point_init::point_idx#0 +Not aliassing across scopes: screen_fill::ch#3 screen_fill::ch#0 +Not aliassing across scopes: screen_fill::screen#4 screen_fill::screen#0 +Not aliassing across scopes: bitmap_init::bitmap#5 bitmap_init::bitmap#0 +Not aliassing across scopes: bitmap_plot::y#1 bitmap_plot::y#0 +Not aliassing across scopes: bitmap_plot::x#1 bitmap_plot::x#0 +Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 +Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3 +Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 +Succesful SSA optimization Pass2AliasElimination +Not aliassing across scopes: SCREEN#1 SCREEN#0 +Not aliassing across scopes: BITMAP#1 BITMAP#0 +Not aliassing across scopes: main::vicSelectGfxBank1_gfx#0 SCREEN#1 +Not aliassing across scopes: main::toD0181_screen#0 SCREEN#1 +Not aliassing across scopes: main::toD0181_gfx#0 BITMAP#1 +Not aliassing across scopes: bitmap_init::bitmap#0 BITMAP#1 +Not aliassing across scopes: screen_fill::screen#0 SCREEN#1 +Not aliassing across scopes: point_init::point_idx#0 main::i#2 +Not aliassing across scopes: point_init::point_idx#1 point_init::point_idx#0 +Not aliassing across scopes: screen_fill::ch#3 screen_fill::ch#0 +Not aliassing across scopes: screen_fill::screen#4 screen_fill::screen#0 +Not aliassing across scopes: bitmap_init::bitmap#5 bitmap_init::bitmap#0 +Not aliassing across scopes: bitmap_plot::y#1 bitmap_plot::y#0 +Not aliassing across scopes: bitmap_plot::x#1 bitmap_plot::x#0 +Self Phi Eliminated (byte) screen_fill::ch#1 +Self Phi Eliminated (byte) screen_fill::y#2 +Self Phi Eliminated (byte*) bitmap_init::bitmap#1 +Self Phi Eliminated (byte) bitmap_clear::y#2 +Succesful SSA optimization Pass2SelfPhiElimination +Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0 +Redundant Phi (byte*) BITMAP#1 (byte*) BITMAP#0 +Redundant Phi (byte) point_init::point_idx#1 (byte) point_init::point_idx#0 +Redundant Phi (byte) screen_fill::ch#3 (byte) screen_fill::ch#0 +Redundant Phi (byte*) screen_fill::screen#4 (byte*) screen_fill::screen#0 +Redundant Phi (byte) screen_fill::ch#1 (byte) screen_fill::ch#2 +Redundant Phi (byte) screen_fill::y#2 (byte) screen_fill::y#4 +Redundant Phi (byte*) bitmap_init::bitmap#5 (byte*) bitmap_init::bitmap#0 +Redundant Phi (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#5 +Redundant Phi (byte) bitmap_clear::y#2 (byte) bitmap_clear::y#4 +Redundant Phi (byte) bitmap_plot::y#1 (byte) bitmap_plot::y#0 +Redundant Phi (word) bitmap_plot::x#1 (word) bitmap_plot::x#0 Succesful SSA optimization Pass2RedundantPhiElimination -Simple Condition (bool~) main::$1 if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 +Simple Condition (bool~) main::$11 if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 +Simple Condition (bool~) screen_fill::$0 if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 +Simple Condition (bool~) screen_fill::$1 if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 +Simple Condition (bool~) bitmap_init::$1 if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@2 +Simple Condition (bool~) bitmap_init::$2 if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 +Simple Condition (bool~) bitmap_init::$9 if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 +Simple Condition (bool~) bitmap_init::$12 if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 +Simple Condition (bool~) bitmap_clear::$1 if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 +Simple Condition (bool~) bitmap_clear::$2 if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte*) BORDERCOL#0 = ((byte*))53280 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) BITMAP#0 = ((byte*))40960 +Constant (const byte*) SCREEN#0 = ((byte*))34816 +Constant (const byte) DELAY#0 = 8 Constant (const word[4]) x_start#0 = { 10, 20, 30, 30 } Constant (const byte[4]) y_start#0 = { 10, 10, 10, 20 } Constant (const word[4]) x_cur#0 = { fill( 4, 0) } Constant (const word[4]) y_cur#0 = { fill( 4, 0) } +Constant (const byte[4]) delay#0 = { fill( 4, 0) } +Constant (const byte) screen_fill::ch#0 = 16 Constant (const byte) main::i#0 = 0 +Constant (const byte) screen_fill::y#0 = 0 +Constant (const byte) screen_fill::x#0 = 0 +Constant (const byte[256]) bitmap_plot_ylo#0 = { fill( 256, 0) } +Constant (const byte[256]) bitmap_plot_yhi#0 = { fill( 256, 0) } +Constant (const byte[256]) bitmap_plot_bit#0 = { fill( 256, 0) } +Constant (const byte) bitmap_init::bits#0 = 128 +Constant (const byte) bitmap_init::x#0 = 0 +Constant (const byte) bitmap_init::bits#2 = 128 +Constant (const byte) bitmap_init::y#0 = 0 +Constant (const word/signed word/dword/signed dword) bitmap_init::$10 = 40*8 +Constant (const byte) bitmap_clear::y#0 = 0 +Constant (const byte) bitmap_clear::x#0 = 0 Succesful SSA optimization Pass2ConstantIdentification -Not aliassing across scopes: init::point_idx#0 main::i#2 +Constant (const byte) main::$0 = VIC_BMM#0|VIC_DEN#0 +Constant (const byte*) main::vicSelectGfxBank1_gfx#0 = SCREEN#0 +Constant (const byte*) main::toD0181_screen#0 = SCREEN#0 +Constant (const byte*) main::toD0181_gfx#0 = BITMAP#0 +Constant (const byte*) bitmap_init::bitmap#0 = BITMAP#0 +Constant (const byte*) screen_fill::screen#0 = SCREEN#0 +Succesful SSA optimization Pass2ConstantIdentification +Constant (const byte) main::$1 = main::$0|VIC_RSEL#0 +Constant (const word) main::vicSelectGfxBank1_toDd001_$0#0 = ((word))main::vicSelectGfxBank1_gfx#0 +Constant (const word) main::toD0181_$0#0 = ((word))main::toD0181_screen#0 +Constant (const word) main::toD0181_$4#0 = ((word))main::toD0181_gfx#0 +Succesful SSA optimization Pass2ConstantIdentification +Constant (const byte/word/dword) main::$2 = main::$1|3 +Constant (const byte) main::vicSelectGfxBank1_toDd001_$1#0 = >main::vicSelectGfxBank1_toDd001_$0#0 +Constant (const word) main::toD0181_$1#0 = main::toD0181_$0#0&16383 +Constant (const byte) main::toD0181_$5#0 = >main::toD0181_$4#0 +Succesful SSA optimization Pass2ConstantIdentification +Constant (const byte) main::vicSelectGfxBank1_toDd001_$2#0 = main::vicSelectGfxBank1_toDd001_$1#0>>6 +Constant (const word) main::toD0181_$2#0 = main::toD0181_$1#0<<2 +Constant (const byte) main::toD0181_$6#0 = main::toD0181_$5#0>>2 +Succesful SSA optimization Pass2ConstantIdentification +Constant (const byte) main::vicSelectGfxBank1_toDd001_return#0 = 3^main::vicSelectGfxBank1_toDd001_$2#0 +Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0 +Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&15 +Succesful SSA optimization Pass2ConstantIdentification +Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0 +Succesful SSA optimization Pass2ConstantIdentification +if() condition always true - replacing block destination if(true) goto main::@3 +Succesful SSA optimization Pass2ConstantIfs +Fixing inline constructor with bitmap_clear::$3 ← *(bitmap_plot_yhi#0 + 0) w= *(bitmap_plot_ylo#0 + 0) +Fixing inline constructor with bitmap_plot::$3 ← *(bitmap_plot_yhi#0 + bitmap_plot::y#0) w= *(bitmap_plot_ylo#0 + bitmap_plot::y#0) +Succesful SSA optimization Pass2FixInlineConstructors +Eliminating Noop Cast (byte*) bitmap_clear::bitmap#0 ← ((byte*)) (word~) bitmap_clear::$3 +Eliminating Noop Cast (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$3 +Succesful SSA optimization Pass2NopCastElimination +Removing unused block main::@return +Succesful SSA optimization Pass2EliminateUnusedBlocks +Culled Empty Block (label) @3 +Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return +Culled Empty Block (label) main::@9 +Culled Empty Block (label) main::toD0181_@return +Culled Empty Block (label) main::@13 +Culled Empty Block (label) main::@2 +Culled Empty Block (label) @6 +Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5 +Culled Empty Block (label) bitmap_init::@6 +Succesful SSA optimization Pass2CullEmptyBlocks +Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5 +Not aliassing across scopes: point_init::point_idx#0 main::i#2 +Self Phi Eliminated (byte) screen_fill::ch#2 +Succesful SSA optimization Pass2SelfPhiElimination +Redundant Phi (byte) screen_fill::ch#2 (const byte) screen_fill::ch#0 +Succesful SSA optimization Pass2RedundantPhiElimination +Consolidated array index constant in *(bitmap_plot_yhi#0+0) +Consolidated array index constant in *(bitmap_plot_ylo#0+0) +Succesful SSA optimization Pass2ConstantAdditionElimination +Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5 +Not aliassing across scopes: point_init::point_idx#0 main::i#2 OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 +Inlining constant with var siblings (const byte) screen_fill::y#0 +Inlining constant with var siblings (const byte) screen_fill::y#0 +Inlining constant with var siblings (const byte) screen_fill::x#0 +Inlining constant with var siblings (const byte) screen_fill::x#0 +Inlining constant with var siblings (const byte*) screen_fill::screen#0 +Inlining constant with var siblings (const byte*) screen_fill::screen#0 +Inlining constant with var siblings (const byte*) screen_fill::screen#0 +Inlining constant with var siblings (const byte) bitmap_init::bits#0 +Inlining constant with var siblings (const byte) bitmap_init::bits#0 +Inlining constant with var siblings (const byte) bitmap_init::bits#0 +Inlining constant with var siblings (const byte) bitmap_init::x#0 +Inlining constant with var siblings (const byte) bitmap_init::x#0 +Inlining constant with var siblings (const byte) bitmap_init::bits#2 +Inlining constant with var siblings (const byte) bitmap_init::bits#2 +Inlining constant with var siblings (const byte) bitmap_init::bits#2 +Inlining constant with var siblings (const byte) bitmap_init::y#0 +Inlining constant with var siblings (const byte) bitmap_init::y#0 +Inlining constant with var siblings (const byte) bitmap_clear::y#0 +Inlining constant with var siblings (const byte) bitmap_clear::y#0 +Inlining constant with var siblings (const byte) bitmap_clear::x#0 +Inlining constant with var siblings (const byte) bitmap_clear::x#0 +Constant inlined main::toD0181_screen#0 = (const byte*) SCREEN#0 +Constant inlined main::toD0181_gfx#0 = (const byte*) BITMAP#0 +Constant inlined bitmap_init::bits#0 = (byte/word/signed word/dword/signed dword) 128 +Constant inlined bitmap_init::bits#2 = (byte/word/signed word/dword/signed dword) 128 Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined bitmap_init::$10 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 +Constant inlined main::vicSelectGfxBank1_toDd001_$2#0 = >((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +Constant inlined screen_fill::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined main::vicSelectGfxBank1_toDd001_$1#0 = >((word))(const byte*) SCREEN#0 +Constant inlined main::vicSelectGfxBank1_toDd001_$0#0 = ((word))(const byte*) SCREEN#0 +Constant inlined bitmap_clear::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined bitmap_clear::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined main::toD0181_$0#0 = ((word))(const byte*) SCREEN#0 +Constant inlined main::toD0181_$1#0 = ((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383 +Constant inlined main::toD0181_$6#0 = >((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined main::toD0181_$7#0 = >((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 +Constant inlined screen_fill::screen#0 = (const byte*) SCREEN#0 +Constant inlined main::$1 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0 +Constant inlined main::toD0181_$2#0 = ((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined main::$2 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 +Constant inlined main::toD0181_$3#0 = >((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined main::toD0181_$4#0 = ((word))(const byte*) BITMAP#0 +Constant inlined main::$0 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0 +Constant inlined main::toD0181_$5#0 = >((word))(const byte*) BITMAP#0 +Constant inlined main::vicSelectGfxBank1_gfx#0 = (const byte*) SCREEN#0 +Constant inlined bitmap_init::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined screen_fill::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined bitmap_init::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined bitmap_init::bitmap#0 = (const byte*) BITMAP#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @2 @end main main::@1 main::@3 main::@return init init::@return -Added new block during phi lifting main::@4(between main::@3 and main::@1) -Block Sequence Planned @begin @2 @end main main::@1 main::@3 main::@return main::@4 init init::@return +Block Sequence Planned @begin @9 @end main main::vicSelectGfxBank1 main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_@1 main::toD0181 main::@10 main::@11 main::@12 main::@1 main::@14 main::@15 main::@3 bitmap_plot bitmap_plot::@return point_init point_init::@return screen_fill screen_fill::@1 screen_fill::@2 screen_fill::@3 screen_fill::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return +Added new block during phi lifting main::@16(between main::@15 and main::@1) +Added new block during phi lifting screen_fill::@5(between screen_fill::@3 and screen_fill::@1) +Added new block during phi lifting screen_fill::@6(between screen_fill::@2 and screen_fill::@2) +Added new block during phi lifting bitmap_clear::@5(between bitmap_clear::@3 and bitmap_clear::@1) +Added new block during phi lifting bitmap_clear::@6(between bitmap_clear::@2 and bitmap_clear::@2) +Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and bitmap_init::@1) +Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2) +Added new block during phi lifting bitmap_init::@11(between bitmap_init::@4 and bitmap_init::@3) +Added new block during phi lifting bitmap_init::@12(between bitmap_init::@3 and bitmap_init::@4) +Block Sequence Planned @begin @9 @end main main::vicSelectGfxBank1 main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_@1 main::toD0181 main::@10 main::@11 main::@12 main::@1 main::@14 main::@15 main::@3 main::@16 bitmap_plot bitmap_plot::@return point_init point_init::@return screen_fill screen_fill::@1 screen_fill::@2 screen_fill::@3 screen_fill::@return screen_fill::@5 screen_fill::@6 bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_clear::@5 bitmap_clear::@6 bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@11 bitmap_init::@12 bitmap_init::@9 bitmap_init::@10 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @2 +Adding NOP phi() at start of @9 Adding NOP phi() at start of @end -Adding NOP phi() at start of main +Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 +Adding NOP phi() at start of main::toD0181 +Adding NOP phi() at start of main::@11 +Adding NOP phi() at start of main::@12 +Adding NOP phi() at start of screen_fill +Adding NOP phi() at start of bitmap_init +Adding NOP phi() at start of bitmap_init::@5 CALL GRAPH Calls in [] to main:2 -Calls in [main] to init:7 +Calls in [main] to bitmap_init:13 bitmap_clear:15 screen_fill:17 point_init:20 bitmap_plot:24 Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... -Created 1 initial phi equivalence classes -Coalesced [11] main::i#4 ← main::i#1 -Coalesced down to 1 phi equivalence classes -Culled Empty Block (label) main::@4 -Block Sequence Planned @begin @2 @end main main::@1 main::@3 main::@return init init::@return +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Created 15 initial phi equivalence classes +Coalesced [28] main::i#5 ← main::i#1 +Coalesced [46] screen_fill::screen#7 ← screen_fill::screen#3 +Coalesced [55] screen_fill::screen#6 ← screen_fill::screen#1 +Coalesced [56] screen_fill::y#5 ← screen_fill::y#1 +Coalesced (already) [57] screen_fill::screen#8 ← screen_fill::screen#1 +Coalesced [58] screen_fill::x#3 ← screen_fill::x#1 +Coalesced [62] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 +Coalesced [71] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 +Coalesced [72] bitmap_clear::y#5 ← bitmap_clear::y#1 +Coalesced (already) [73] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 +Coalesced [74] bitmap_clear::x#3 ← bitmap_clear::x#1 +Coalesced [94] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 +Coalesced [99] bitmap_init::y#5 ← bitmap_init::y#1 +Coalesced [100] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 +Coalesced (already) [101] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 +Coalesced [102] bitmap_init::bits#5 ← bitmap_init::bits#4 +Coalesced [103] bitmap_init::x#5 ← bitmap_init::x#1 +Coalesced [104] bitmap_init::bits#6 ← bitmap_init::bits#1 +Coalesced down to 11 phi equivalence classes +Culled Empty Block (label) main::@16 +Culled Empty Block (label) screen_fill::@5 +Culled Empty Block (label) screen_fill::@6 +Culled Empty Block (label) bitmap_clear::@5 +Culled Empty Block (label) bitmap_clear::@6 +Culled Empty Block (label) bitmap_init::@5 +Culled Empty Block (label) bitmap_init::@11 +Culled Empty Block (label) bitmap_init::@12 +Culled Empty Block (label) bitmap_init::@9 +Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@10 +Block Sequence Planned @begin @9 @end main main::vicSelectGfxBank1 main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_@1 main::toD0181 main::@10 main::@11 main::@12 main::@1 main::@14 main::@15 main::@3 bitmap_plot bitmap_plot::@return point_init point_init::@return screen_fill screen_fill::@1 screen_fill::@2 screen_fill::@3 screen_fill::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@10 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @2 +Adding NOP phi() at start of @9 Adding NOP phi() at start of @end -Adding NOP phi() at start of main +Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 +Adding NOP phi() at start of main::toD0181 +Adding NOP phi() at start of main::@11 +Adding NOP phi() at start of main::@12 +Adding NOP phi() at start of screen_fill +Adding NOP phi() at start of bitmap_init +Adding NOP phi() at start of bitmap_init::@10 +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... @@ -261,76 +1825,371 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@2 -@2: scope:[] from @begin + to:@9 +@9: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @2 +@end: scope:[] from @9 [3] phi() [ ] ( ) -main: scope:[main] from @2 - [4] phi() [ ] ( main:2 [ ] ) +main: scope:[main] from @9 + asm { sei } + [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) + [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) + [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) + to:main::vicSelectGfxBank1 +main::vicSelectGfxBank1: scope:[main] from main + [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) + to:main::vicSelectGfxBank1_toDd001 +main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 + [9] phi() [ ] ( main:2 [ ] ) + to:main::vicSelectGfxBank1_@1 +main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 + [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) + to:main::toD0181 +main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1 + [11] phi() [ ] ( main:2 [ ] ) + to:main::@10 +main::@10: scope:[main] from main::toD0181 + [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) + [13] call bitmap_init [ ] ( main:2 [ ] ) + to:main::@11 +main::@11: scope:[main] from main::@10 + [14] phi() [ ] ( main:2 [ ] ) + [15] call bitmap_clear [ ] ( main:2 [ ] ) + to:main::@12 +main::@12: scope:[main] from main::@11 + [16] phi() [ ] ( main:2 [ ] ) + [17] call screen_fill [ ] ( main:2 [ ] ) to:main::@1 -main::@1: scope:[main] from main main::@3 - [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] (byte) init::point_idx#0 ← (byte) main::i#2 [ main::i#2 init::point_idx#0 ] ( main:2 [ main::i#2 init::point_idx#0 ] ) - [7] call init [ main::i#2 ] ( main:2 [ main::i#2 ] ) +main::@1: scope:[main] from main::@12 main::@15 + [18] (byte) main::i#2 ← phi( main::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@15/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 [ main::i#2 point_init::point_idx#0 ] ( main:2 [ main::i#2 point_init::point_idx#0 ] ) + [20] call point_init [ main::i#2 ] ( main:2 [ main::i#2 ] ) + to:main::@14 +main::@14: scope:[main] from main::@1 + [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) + [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) + [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) [ main::i#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ( main:2 [ main::i#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ) + [24] call bitmap_plot [ main::i#2 ] ( main:2 [ main::i#2 ] ) + to:main::@15 +main::@15: scope:[main] from main::@14 + [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@3 -main::@3: scope:[main] from main::@1 - [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) - [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) - to:main::@return -main::@return: scope:[main] from main::@3 - [10] return [ ] ( main:2 [ ] ) +main::@3: scope:[main] from main::@15 main::@3 + [27] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ ] ( main:2 [ ] ) + to:main::@3 +bitmap_plot: scope:[bitmap_plot] from main::@14 + [28] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) + [29] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) + [30] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) + [31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) + [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) + to:bitmap_plot::@return +bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot + [33] return [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) to:@return -init: scope:[init] from main::@1 - [11] (word~) init::$0 ← *((const word[4]) x_start#0 + (byte) init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$0 ] ) - [12] *((const word[4]) x_cur#0 + (byte) init::point_idx#0) ← (word~) init::$0 [ init::point_idx#0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 ] ) - [13] (byte~) init::$1 ← (byte) init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::point_idx#0 init::$1 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$1 ] ) - [14] (word~) init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) init::$1) [ init::point_idx#0 init::$2 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$2 ] ) - [15] (word~) init::$3 ← (word~) init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$3 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$3 ] ) - [16] *((const word[4]) y_cur#0 + (byte) init::point_idx#0) ← (word~) init::$3 [ ] ( main:2::init:7 [ main::i#2 ] ) - to:init::@return -init::@return: scope:[init] from init - [17] return [ ] ( main:2::init:7 [ main::i#2 ] ) +point_init: scope:[point_init] from main::@1 + [34] (word~) point_init::$0 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$0 ] ) + [35] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$0 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) + [36] (byte~) point_init::$1 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$1 ] ) + [37] (word~) point_init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) point_init::$1) [ point_init::point_idx#0 point_init::$2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$2 ] ) + [38] (word~) point_init::$3 ← (word~) point_init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$3 ] ) + [39] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$3 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) + [40] (byte~) point_init::$4 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::$4 ] ) + [41] *((const byte[4]) delay#0 + (byte~) point_init::$4) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) + to:point_init::@return +point_init::@return: scope:[point_init] from point_init + [42] return [ ] ( main:2::point_init:20 [ main::i#2 ] ) to:@return +screen_fill: scope:[screen_fill] from main::@12 + [43] phi() [ ] ( main:2::screen_fill:17 [ ] ) + to:screen_fill::@1 +screen_fill::@1: scope:[screen_fill] from screen_fill screen_fill::@3 + [44] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 ) [ screen_fill::screen#3 screen_fill::y#4 ] ( main:2::screen_fill:17 [ screen_fill::screen#3 screen_fill::y#4 ] ) + [44] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 ) [ screen_fill::screen#3 screen_fill::y#4 ] ( main:2::screen_fill:17 [ screen_fill::screen#3 screen_fill::y#4 ] ) + to:screen_fill::@2 +screen_fill::@2: scope:[screen_fill] from screen_fill::@1 screen_fill::@2 + [45] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 ) [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) + [45] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 ) [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) + [46] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) + [47] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] ) + [48] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ) + [49] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ) + to:screen_fill::@3 +screen_fill::@3: scope:[screen_fill] from screen_fill::@2 + [50] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] ) + [51] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] ) + to:screen_fill::@return +screen_fill::@return: scope:[screen_fill] from screen_fill::@3 + [52] return [ ] ( main:2::screen_fill:17 [ ] ) + to:@return +bitmap_clear: scope:[bitmap_clear] from main::@11 + [53] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0+(byte/signed byte/word/signed word/dword/signed dword) 0) w= *((const byte[256]) bitmap_plot_ylo#0+(byte/signed byte/word/signed word/dword/signed dword) 0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) + [54] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) + to:bitmap_clear::@1 +bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 + [55] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ) + [55] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ) + to:bitmap_clear::@2 +bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 + [56] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) + [56] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) + [57] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) + [58] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] ) + [59] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ) + [60] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ) + to:bitmap_clear::@3 +bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 + [61] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ) + [62] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ) + to:bitmap_clear::@return +bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 + [63] return [ ] ( main:2::bitmap_clear:15 [ ] ) + to:@return +bitmap_init: scope:[bitmap_init] from main::@10 + [64] phi() [ ] ( main:2::bitmap_init:13 [ ] ) + to:bitmap_init::@1 +bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 + [65] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] ) + [65] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] ) + [66] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] ) + [67] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] ) + [68] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] ) + to:bitmap_init::@2 +bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10 + [69] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) [ bitmap_init::x#2 bitmap_init::bits#4 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#4 ] ) + [70] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] ) + [71] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] ) + to:bitmap_init::@3 +bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 + [72] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) + [72] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) + [73] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) + [74] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] ) + [75] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] ) + [76] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) + [77] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ) + [78] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) + [79] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) + [80] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) + to:bitmap_init::@7 +bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3 + [81] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) + to:bitmap_init::@4 +bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7 + [82] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) [ bitmap_init::y#2 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#4 ] ) + [83] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ) + [84] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ) + to:bitmap_init::@return +bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 + [85] return [ ] ( main:2::bitmap_init:13 [ ] ) + to:@return +bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1 + [86] phi() [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] ) + to:bitmap_init::@2 DOMINATORS @begin dominated by @begin -@2 dominated by @2 @begin -@end dominated by @2 @begin @end -main dominated by @2 @begin main -main::@1 dominated by @2 @begin main::@1 main -main::@3 dominated by @2 @begin main::@1 main main::@3 -main::@return dominated by main::@return @2 @begin main::@1 main main::@3 -init dominated by init @2 @begin main::@1 main -init::@return dominated by init @2 @begin main::@1 init::@return main +@9 dominated by @begin @9 +@end dominated by @end @begin @9 +main dominated by main @begin @9 +main::vicSelectGfxBank1 dominated by main::vicSelectGfxBank1 main @begin @9 +main::vicSelectGfxBank1_toDd001 dominated by main::vicSelectGfxBank1 main @begin main::vicSelectGfxBank1_toDd001 @9 +main::vicSelectGfxBank1_@1 dominated by main::vicSelectGfxBank1 main @begin main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +main::toD0181 dominated by main::toD0181 main::vicSelectGfxBank1 main @begin main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +main::@10 dominated by main::toD0181 main::vicSelectGfxBank1 main @begin main::@10 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +main::@11 dominated by main::toD0181 main::vicSelectGfxBank1 main main::@11 @begin main::@10 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +main::@12 dominated by main::toD0181 main::vicSelectGfxBank1 main main::@11 @begin main::@10 main::@12 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +main::@1 dominated by main::toD0181 main::vicSelectGfxBank1 main main::@1 main::@11 @begin main::@10 main::@12 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +main::@14 dominated by main::toD0181 main::vicSelectGfxBank1 main main::@1 main::@11 @begin main::@10 main::@12 main::@14 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +main::@15 dominated by main::toD0181 main::vicSelectGfxBank1 main main::@1 main::@11 @begin main::@10 main::@12 main::@15 main::@14 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +main::@3 dominated by main::toD0181 main::vicSelectGfxBank1 main main::@1 main::@3 main::@11 @begin main::@10 main::@12 main::@15 main::@14 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +bitmap_plot dominated by main::toD0181 main::vicSelectGfxBank1 main main::@1 main::@11 @begin main::@10 bitmap_plot main::@12 main::@14 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +bitmap_plot::@return dominated by main::toD0181 main::vicSelectGfxBank1 main main::@1 main::@11 @begin main::@10 bitmap_plot main::@12 main::@14 bitmap_plot::@return main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +point_init dominated by main::toD0181 main::vicSelectGfxBank1 main main::@1 main::@11 @begin main::@10 point_init main::@12 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +point_init::@return dominated by main::toD0181 main::vicSelectGfxBank1 main main::@1 point_init::@return main::@11 @begin main::@10 point_init main::@12 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +screen_fill dominated by main::toD0181 main::vicSelectGfxBank1 main screen_fill main::@11 @begin main::@10 main::@12 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +screen_fill::@1 dominated by main::toD0181 main::vicSelectGfxBank1 main screen_fill::@1 screen_fill main::@11 @begin main::@10 main::@12 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +screen_fill::@2 dominated by main::toD0181 main::vicSelectGfxBank1 main screen_fill::@1 screen_fill::@2 screen_fill main::@11 @begin main::@10 main::@12 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +screen_fill::@3 dominated by main::toD0181 main::vicSelectGfxBank1 main screen_fill::@1 screen_fill::@3 screen_fill::@2 screen_fill main::@11 @begin main::@10 main::@12 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +screen_fill::@return dominated by main::toD0181 main::vicSelectGfxBank1 main screen_fill::@1 screen_fill::@3 screen_fill::@2 screen_fill main::@11 @begin main::@10 screen_fill::@return main::@12 main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +bitmap_clear dominated by main::toD0181 main::vicSelectGfxBank1 main main::@11 @begin main::@10 main::vicSelectGfxBank1_toDd001 @9 bitmap_clear main::vicSelectGfxBank1_@1 +bitmap_clear::@1 dominated by main::toD0181 main::vicSelectGfxBank1 main bitmap_clear::@1 main::@11 @begin main::@10 main::vicSelectGfxBank1_toDd001 @9 bitmap_clear main::vicSelectGfxBank1_@1 +bitmap_clear::@2 dominated by main::toD0181 main::vicSelectGfxBank1 main bitmap_clear::@1 bitmap_clear::@2 main::@11 @begin main::@10 main::vicSelectGfxBank1_toDd001 @9 bitmap_clear main::vicSelectGfxBank1_@1 +bitmap_clear::@3 dominated by bitmap_clear::@3 main::toD0181 main::vicSelectGfxBank1 main bitmap_clear::@1 bitmap_clear::@2 main::@11 @begin main::@10 main::vicSelectGfxBank1_toDd001 @9 bitmap_clear main::vicSelectGfxBank1_@1 +bitmap_clear::@return dominated by bitmap_clear::@3 main::toD0181 main::vicSelectGfxBank1 main bitmap_clear::@1 bitmap_clear::@2 main::@11 @begin main::@10 bitmap_clear::@return main::vicSelectGfxBank1_toDd001 @9 bitmap_clear main::vicSelectGfxBank1_@1 +bitmap_init dominated by main::toD0181 main::vicSelectGfxBank1 main @begin main::@10 bitmap_init main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +bitmap_init::@1 dominated by main::toD0181 main::vicSelectGfxBank1 main bitmap_init::@1 @begin main::@10 bitmap_init main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +bitmap_init::@2 dominated by main::toD0181 bitmap_init::@2 main::vicSelectGfxBank1 main bitmap_init::@1 @begin main::@10 bitmap_init main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +bitmap_init::@3 dominated by main::toD0181 bitmap_init::@2 main::vicSelectGfxBank1 bitmap_init::@3 main bitmap_init::@1 @begin main::@10 bitmap_init main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +bitmap_init::@7 dominated by main::toD0181 bitmap_init::@2 main::vicSelectGfxBank1 bitmap_init::@3 main bitmap_init::@1 bitmap_init::@7 @begin main::@10 bitmap_init main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +bitmap_init::@4 dominated by main::toD0181 bitmap_init::@2 main::vicSelectGfxBank1 bitmap_init::@3 main bitmap_init::@1 bitmap_init::@4 @begin main::@10 bitmap_init main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +bitmap_init::@return dominated by main::toD0181 bitmap_init::@2 main::vicSelectGfxBank1 bitmap_init::@3 main bitmap_init::@1 bitmap_init::@4 bitmap_init::@return @begin main::@10 bitmap_init main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 +bitmap_init::@10 dominated by bitmap_init::@10 main::toD0181 main::vicSelectGfxBank1 main bitmap_init::@1 @begin main::@10 bitmap_init main::vicSelectGfxBank1_toDd001 @9 main::vicSelectGfxBank1_@1 NATURAL LOOPS -Found back edge: Loop head: main::@1 tails: main::@3 blocks: null -Populated: Loop head: main::@1 tails: main::@3 blocks: main::@3 main::@1 -Loop head: main::@1 tails: main::@3 blocks: main::@3 main::@1 +Found back edge: Loop head: main::@1 tails: main::@15 blocks: null +Found back edge: Loop head: main::@3 tails: main::@3 blocks: null +Found back edge: Loop head: screen_fill::@2 tails: screen_fill::@2 blocks: null +Found back edge: Loop head: screen_fill::@1 tails: screen_fill::@3 blocks: null +Found back edge: Loop head: bitmap_clear::@2 tails: bitmap_clear::@2 blocks: null +Found back edge: Loop head: bitmap_clear::@1 tails: bitmap_clear::@3 blocks: null +Found back edge: Loop head: bitmap_init::@1 tails: bitmap_init::@2 blocks: null +Found back edge: Loop head: bitmap_init::@3 tails: bitmap_init::@4 blocks: null +Populated: Loop head: main::@1 tails: main::@15 blocks: main::@15 main::@14 main::@1 +Populated: Loop head: main::@3 tails: main::@3 blocks: main::@3 +Populated: Loop head: screen_fill::@2 tails: screen_fill::@2 blocks: screen_fill::@2 +Populated: Loop head: screen_fill::@1 tails: screen_fill::@3 blocks: screen_fill::@3 screen_fill::@2 screen_fill::@1 +Populated: Loop head: bitmap_clear::@2 tails: bitmap_clear::@2 blocks: bitmap_clear::@2 +Populated: Loop head: bitmap_clear::@1 tails: bitmap_clear::@3 blocks: bitmap_clear::@3 bitmap_clear::@2 bitmap_clear::@1 +Populated: Loop head: bitmap_init::@1 tails: bitmap_init::@2 blocks: bitmap_init::@2 bitmap_init::@1 bitmap_init::@10 +Populated: Loop head: bitmap_init::@3 tails: bitmap_init::@4 blocks: bitmap_init::@4 bitmap_init::@3 bitmap_init::@7 +Loop head: main::@1 tails: main::@15 blocks: main::@15 main::@14 main::@1 +Loop head: main::@3 tails: main::@3 blocks: main::@3 +Loop head: screen_fill::@2 tails: screen_fill::@2 blocks: screen_fill::@2 +Loop head: screen_fill::@1 tails: screen_fill::@3 blocks: screen_fill::@3 screen_fill::@2 screen_fill::@1 +Loop head: bitmap_clear::@2 tails: bitmap_clear::@2 blocks: bitmap_clear::@2 +Loop head: bitmap_clear::@1 tails: bitmap_clear::@3 blocks: bitmap_clear::@3 bitmap_clear::@2 bitmap_clear::@1 +Loop head: bitmap_init::@1 tails: bitmap_init::@2 blocks: bitmap_init::@2 bitmap_init::@1 bitmap_init::@10 +Loop head: bitmap_init::@3 tails: bitmap_init::@4 blocks: bitmap_init::@4 bitmap_init::@3 bitmap_init::@7 NATURAL LOOPS WITH DEPTH Found 0 loops in scope [] -Found 1 loops in scope [main] - Loop head: main::@1 tails: main::@3 blocks: main::@3 main::@1 -Found 0 loops in scope [init] -Loop head: main::@1 tails: main::@3 blocks: main::@3 main::@1 depth: 1 +Found 2 loops in scope [main] + Loop head: main::@1 tails: main::@15 blocks: main::@15 main::@14 main::@1 + Loop head: main::@3 tails: main::@3 blocks: main::@3 +Found 2 loops in scope [bitmap_init] + Loop head: bitmap_init::@1 tails: bitmap_init::@2 blocks: bitmap_init::@2 bitmap_init::@1 bitmap_init::@10 + Loop head: bitmap_init::@3 tails: bitmap_init::@4 blocks: bitmap_init::@4 bitmap_init::@3 bitmap_init::@7 +Found 2 loops in scope [bitmap_clear] + Loop head: bitmap_clear::@2 tails: bitmap_clear::@2 blocks: bitmap_clear::@2 + Loop head: bitmap_clear::@1 tails: bitmap_clear::@3 blocks: bitmap_clear::@3 bitmap_clear::@2 bitmap_clear::@1 +Found 2 loops in scope [screen_fill] + Loop head: screen_fill::@2 tails: screen_fill::@2 blocks: screen_fill::@2 + Loop head: screen_fill::@1 tails: screen_fill::@3 blocks: screen_fill::@3 screen_fill::@2 screen_fill::@1 +Found 0 loops in scope [point_init] +Found 0 loops in scope [bitmap_plot] +Loop head: main::@1 tails: main::@15 blocks: main::@15 main::@14 main::@1 depth: 1 +Loop head: main::@3 tails: main::@3 blocks: main::@3 depth: 1 +Loop head: screen_fill::@2 tails: screen_fill::@2 blocks: screen_fill::@2 depth: 2 +Loop head: screen_fill::@1 tails: screen_fill::@3 blocks: screen_fill::@3 screen_fill::@2 screen_fill::@1 depth: 1 +Loop head: bitmap_clear::@2 tails: bitmap_clear::@2 blocks: bitmap_clear::@2 depth: 2 +Loop head: bitmap_clear::@1 tails: bitmap_clear::@3 blocks: bitmap_clear::@3 bitmap_clear::@2 bitmap_clear::@1 depth: 1 +Loop head: bitmap_init::@1 tails: bitmap_init::@2 blocks: bitmap_init::@2 bitmap_init::@1 bitmap_init::@10 depth: 1 +Loop head: bitmap_init::@3 tails: bitmap_init::@4 blocks: bitmap_init::@4 bitmap_init::@3 bitmap_init::@7 depth: 1 VARIABLE REGISTER WEIGHTS -(void()) init((byte) init::point_idx) -(word~) init::$0 4.0 -(byte~) init::$1 4.0 -(word~) init::$2 4.0 -(word~) init::$3 4.0 -(byte) init::point_idx -(byte) init::point_idx#0 3.166666666666667 +(byte*) BITMAP +(byte*) BORDERCOL +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) D011 +(byte*) D018 +(byte) DELAY +(byte*) PROCPORT +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_RAM_IO +(byte*) SCREEN +(byte) VIC_BMM +(byte) VIC_DEN +(byte) VIC_RSEL +(void()) bitmap_clear() +(word~) bitmap_clear::$3 2.0 +(byte*) bitmap_clear::bitmap +(byte*) bitmap_clear::bitmap#1 42.599999999999994 +(byte*) bitmap_clear::bitmap#2 157.0 +(byte*) bitmap_clear::bitmap#3 24.0 +(byte*~) bitmap_clear::bitmap#5 4.0 +(byte) bitmap_clear::x +(byte) bitmap_clear::x#1 151.5 +(byte) bitmap_clear::x#2 67.33333333333333 +(byte) bitmap_clear::y +(byte) bitmap_clear::y#1 16.5 +(byte) bitmap_clear::y#4 3.6666666666666665 +(void()) bitmap_init((byte*) bitmap_init::bitmap) +(byte~) bitmap_init::$3 11.0 +(byte~) bitmap_init::$4 22.0 +(byte~) bitmap_init::$5 22.0 +(byte~) bitmap_init::$6 22.0 +(byte~) bitmap_init::$7 22.0 +(byte*) bitmap_init::bitmap +(byte) bitmap_init::bits +(byte) bitmap_init::bits#1 11.0 +(byte) bitmap_init::bits#3 16.5 +(byte) bitmap_init::bits#4 7.333333333333333 +(byte) bitmap_init::x +(byte) bitmap_init::x#1 16.5 +(byte) bitmap_init::x#2 5.5 +(byte) bitmap_init::y +(byte) bitmap_init::y#1 16.5 +(byte) bitmap_init::y#2 6.0 +(byte*) bitmap_init::yoffs +(byte*) bitmap_init::yoffs#1 22.0 +(byte*) bitmap_init::yoffs#2 6.111111111111112 +(byte*) bitmap_init::yoffs#4 11.0 +(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) +(word~) bitmap_plot::$1 4.0 +(byte~) bitmap_plot::$2 4.0 +(word~) bitmap_plot::$3 1.0 +(byte*) bitmap_plot::plotter +(byte*) bitmap_plot::plotter#1 3.0 +(word) bitmap_plot::x +(word) bitmap_plot::x#0 3.0 +(byte) bitmap_plot::y +(byte) bitmap_plot::y#0 15.0 +(byte[256]) bitmap_plot_bit +(byte[256]) bitmap_plot_yhi +(byte[256]) bitmap_plot_ylo +(byte[4]) delay (void()) main() +(byte~) main::$9 11.0 (byte) main::i (byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#2 7.857142857142857 +(word~) main::toD0181_$0 +(word~) main::toD0181_$1 +(word~) main::toD0181_$2 +(byte~) main::toD0181_$3 +(word~) main::toD0181_$4 +(byte~) main::toD0181_$5 +(byte~) main::toD0181_$6 +(byte~) main::toD0181_$7 +(byte~) main::toD0181_$8 +(byte*) main::toD0181_gfx +(byte) main::toD0181_return +(byte*) main::toD0181_screen +(byte~) main::vicSelectGfxBank1_$0 +(byte*) main::vicSelectGfxBank1_gfx +(word~) main::vicSelectGfxBank1_toDd001_$0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(byte~) main::vicSelectGfxBank1_toDd001_$2 +(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3 +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte) main::vicSelectGfxBank1_toDd001_return +(void()) point_init((byte) point_init::point_idx) +(word~) point_init::$0 4.0 +(byte~) point_init::$1 4.0 +(word~) point_init::$2 4.0 +(word~) point_init::$3 4.0 +(byte~) point_init::$4 4.0 +(byte) point_init::point_idx +(byte) point_init::point_idx#0 2.9999999999999996 +(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch) +(byte) screen_fill::ch +(byte*) screen_fill::screen +(byte*) screen_fill::screen#1 42.599999999999994 +(byte*) screen_fill::screen#2 157.0 +(byte*) screen_fill::screen#3 22.0 +(byte) screen_fill::x +(byte) screen_fill::x#1 151.5 +(byte) screen_fill::x#2 67.33333333333333 +(byte) screen_fill::y +(byte) screen_fill::y#1 16.5 +(byte) screen_fill::y#4 3.6666666666666665 (word[4]) x_cur (word[4]) x_start (word[4]) y_cur @@ -338,24 +2197,96 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ main::i#2 main::i#1 ] -Added variable init::point_idx#0 to zero page equivalence class [ init::point_idx#0 ] -Added variable init::$0 to zero page equivalence class [ init::$0 ] -Added variable init::$1 to zero page equivalence class [ init::$1 ] -Added variable init::$2 to zero page equivalence class [ init::$2 ] -Added variable init::$3 to zero page equivalence class [ init::$3 ] +[ screen_fill::y#4 screen_fill::y#1 ] +[ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] +[ screen_fill::x#2 screen_fill::x#1 ] +[ bitmap_clear::y#4 bitmap_clear::y#1 ] +[ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] +[ bitmap_clear::x#2 bitmap_clear::x#1 ] +[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +[ bitmap_init::x#2 bitmap_init::x#1 ] +[ bitmap_init::y#2 bitmap_init::y#1 ] +[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +Added variable point_init::point_idx#0 to zero page equivalence class [ point_init::point_idx#0 ] +Added variable main::$9 to zero page equivalence class [ main::$9 ] +Added variable bitmap_plot::x#0 to zero page equivalence class [ bitmap_plot::x#0 ] +Added variable bitmap_plot::y#0 to zero page equivalence class [ bitmap_plot::y#0 ] +Added variable bitmap_plot::$3 to zero page equivalence class [ bitmap_plot::$3 ] +Added variable bitmap_plot::$1 to zero page equivalence class [ bitmap_plot::$1 ] +Added variable bitmap_plot::plotter#1 to zero page equivalence class [ bitmap_plot::plotter#1 ] +Added variable bitmap_plot::$2 to zero page equivalence class [ bitmap_plot::$2 ] +Added variable point_init::$0 to zero page equivalence class [ point_init::$0 ] +Added variable point_init::$1 to zero page equivalence class [ point_init::$1 ] +Added variable point_init::$2 to zero page equivalence class [ point_init::$2 ] +Added variable point_init::$3 to zero page equivalence class [ point_init::$3 ] +Added variable point_init::$4 to zero page equivalence class [ point_init::$4 ] +Added variable bitmap_clear::$3 to zero page equivalence class [ bitmap_clear::$3 ] +Added variable bitmap_init::$3 to zero page equivalence class [ bitmap_init::$3 ] +Added variable bitmap_init::$4 to zero page equivalence class [ bitmap_init::$4 ] +Added variable bitmap_init::$5 to zero page equivalence class [ bitmap_init::$5 ] +Added variable bitmap_init::$6 to zero page equivalence class [ bitmap_init::$6 ] +Added variable bitmap_init::$7 to zero page equivalence class [ bitmap_init::$7 ] Complete equivalence classes [ main::i#2 main::i#1 ] -[ init::point_idx#0 ] -[ init::$0 ] -[ init::$1 ] -[ init::$2 ] -[ init::$3 ] +[ screen_fill::y#4 screen_fill::y#1 ] +[ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] +[ screen_fill::x#2 screen_fill::x#1 ] +[ bitmap_clear::y#4 bitmap_clear::y#1 ] +[ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] +[ bitmap_clear::x#2 bitmap_clear::x#1 ] +[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +[ bitmap_init::x#2 bitmap_init::x#1 ] +[ bitmap_init::y#2 bitmap_init::y#1 ] +[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +[ point_init::point_idx#0 ] +[ main::$9 ] +[ bitmap_plot::x#0 ] +[ bitmap_plot::y#0 ] +[ bitmap_plot::$3 ] +[ bitmap_plot::$1 ] +[ bitmap_plot::plotter#1 ] +[ bitmap_plot::$2 ] +[ point_init::$0 ] +[ point_init::$1 ] +[ point_init::$2 ] +[ point_init::$3 ] +[ point_init::$4 ] +[ bitmap_clear::$3 ] +[ bitmap_init::$3 ] +[ bitmap_init::$4 ] +[ bitmap_init::$5 ] +[ bitmap_init::$6 ] +[ bitmap_init::$7 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Allocated zp ZP_BYTE:3 [ init::point_idx#0 ] -Allocated zp ZP_WORD:4 [ init::$0 ] -Allocated zp ZP_BYTE:6 [ init::$1 ] -Allocated zp ZP_WORD:7 [ init::$2 ] -Allocated zp ZP_WORD:9 [ init::$3 ] +Allocated zp ZP_BYTE:3 [ screen_fill::y#4 screen_fill::y#1 ] +Allocated zp ZP_WORD:4 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] +Allocated zp ZP_BYTE:6 [ screen_fill::x#2 screen_fill::x#1 ] +Allocated zp ZP_BYTE:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Allocated zp ZP_WORD:8 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] +Allocated zp ZP_BYTE:10 [ bitmap_clear::x#2 bitmap_clear::x#1 ] +Allocated zp ZP_BYTE:11 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +Allocated zp ZP_BYTE:12 [ bitmap_init::x#2 bitmap_init::x#1 ] +Allocated zp ZP_BYTE:13 [ bitmap_init::y#2 bitmap_init::y#1 ] +Allocated zp ZP_WORD:14 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +Allocated zp ZP_BYTE:16 [ point_init::point_idx#0 ] +Allocated zp ZP_BYTE:17 [ main::$9 ] +Allocated zp ZP_WORD:18 [ bitmap_plot::x#0 ] +Allocated zp ZP_BYTE:20 [ bitmap_plot::y#0 ] +Allocated zp ZP_WORD:21 [ bitmap_plot::$3 ] +Allocated zp ZP_WORD:23 [ bitmap_plot::$1 ] +Allocated zp ZP_WORD:25 [ bitmap_plot::plotter#1 ] +Allocated zp ZP_BYTE:27 [ bitmap_plot::$2 ] +Allocated zp ZP_WORD:28 [ point_init::$0 ] +Allocated zp ZP_BYTE:30 [ point_init::$1 ] +Allocated zp ZP_WORD:31 [ point_init::$2 ] +Allocated zp ZP_WORD:33 [ point_init::$3 ] +Allocated zp ZP_BYTE:35 [ point_init::$4 ] +Allocated zp ZP_WORD:36 [ bitmap_clear::$3 ] +Allocated zp ZP_BYTE:38 [ bitmap_init::$3 ] +Allocated zp ZP_BYTE:39 [ bitmap_init::$4 ] +Allocated zp ZP_BYTE:40 [ bitmap_init::$5 ] +Allocated zp ZP_BYTE:41 [ bitmap_init::$6 ] +Allocated zp ZP_BYTE:42 [ bitmap_init::$7 ] INITIAL ASM //SEG0 Basic Upstart @@ -363,68 +2294,209 @@ INITIAL ASM :BasicUpstart(main) .pc = $80d "Program" //SEG1 Global Constants & labels + .label PROCPORT_DDR = 0 + .const PROCPORT_DDR_MEMORY_MASK = 7 + .label PROCPORT = 1 + .const PROCPORT_RAM_IO = $35 + .label BORDERCOL = $d020 + .label D011 = $d011 + .const VIC_BMM = $20 + .const VIC_DEN = $10 + .const VIC_RSEL = 8 + .label D018 = $d018 + .label CIA2_PORT_A = $dd00 + .label CIA2_PORT_A_DDR = $dd02 + .label BITMAP = $a000 + .label SCREEN = $8800 + .const DELAY = 8 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -b2_from_bbegin: - jmp b2 -//SEG4 @2 -b2: +//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +b9_from_bbegin: + jmp b9 +//SEG4 @9 +b9: //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @2 to main [phi:@2->main] -main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -bend_from_b2: +//SEG6 [3] phi from @9 to @end [phi:@9->@end] +bend_from_b9: jmp bend -//SEG8 @end +//SEG7 @end bend: -//SEG9 main +//SEG8 main main: { + .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6 + .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f + .label _9 = $11 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - b1_from_main: - //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG9 asm { sei } + sei + //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #PROCPORT_DDR_MEMORY_MASK + sta PROCPORT_DDR + //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #PROCPORT_RAM_IO + sta PROCPORT + //SEG12 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 + sta D011 + jmp vicSelectGfxBank1 + //SEG13 main::vicSelectGfxBank1 + vicSelectGfxBank1: + //SEG14 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #3 + sta CIA2_PORT_A_DDR + //SEG15 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: + jmp vicSelectGfxBank1_toDd001 + //SEG16 main::vicSelectGfxBank1_toDd001 + vicSelectGfxBank1_toDd001: + jmp vicSelectGfxBank1_b1 + //SEG17 main::vicSelectGfxBank1_@1 + vicSelectGfxBank1_b1: + //SEG18 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + //SEG19 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + toD0181_from_vicSelectGfxBank1_b1: + jmp toD0181 + //SEG20 main::toD0181 + toD0181: + jmp b10 + //SEG21 main::@10 + b10: + //SEG22 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + //SEG23 [13] call bitmap_init [ ] ( main:2 [ ] ) + //SEG24 [64] phi from main::@10 to bitmap_init [phi:main::@10->bitmap_init] + bitmap_init_from_b10: + jsr bitmap_init + //SEG25 [14] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + b11_from_b10: + jmp b11 + //SEG26 main::@11 + b11: + //SEG27 [15] call bitmap_clear [ ] ( main:2 [ ] ) + jsr bitmap_clear + //SEG28 [16] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + b12_from_b11: + jmp b12 + //SEG29 main::@12 + b12: + //SEG30 [17] call screen_fill [ ] ( main:2 [ ] ) + //SEG31 [43] phi from main::@12 to screen_fill [phi:main::@12->screen_fill] + screen_fill_from_b12: + jsr screen_fill + //SEG32 [18] phi from main::@12 to main::@1 [phi:main::@12->main::@1] + b1_from_b12: + //SEG33 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - b1_from_b3: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG34 [18] phi from main::@15 to main::@1 [phi:main::@15->main::@1] + b1_from_b15: + //SEG35 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@15->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG36 main::@1 b1: - //SEG15 [6] (byte) init::point_idx#0 ← (byte) main::i#2 [ main::i#2 init::point_idx#0 ] ( main:2 [ main::i#2 init::point_idx#0 ] ) -- vbuz1=vbuz2 + //SEG37 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 [ main::i#2 point_init::point_idx#0 ] ( main:2 [ main::i#2 point_init::point_idx#0 ] ) -- vbuz1=vbuz2 lda i - sta init.point_idx - //SEG16 [7] call init [ main::i#2 ] ( main:2 [ main::i#2 ] ) - jsr init - jmp b3 - //SEG17 main::@3 - b3: - //SEG18 [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=vbuz1_plus_2 + sta point_init.point_idx + //SEG38 [20] call point_init [ main::i#2 ] ( main:2 [ main::i#2 ] ) + jsr point_init + jmp b14 + //SEG39 main::@14 + b14: + //SEG40 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) -- vbuz1=vbuz2_ror_1 + lda i + lsr + sta _9 + //SEG41 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy i + lda x_start,y + sta bitmap_plot.x + lda x_start+1,y + sta bitmap_plot.x+1 + //SEG42 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) [ main::i#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ( main:2 [ main::i#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy _9 + lda y_start,y + sta bitmap_plot.y + //SEG43 [24] call bitmap_plot [ main::i#2 ] ( main:2 [ main::i#2 ] ) + jsr bitmap_plot + jmp b15 + //SEG44 main::@15 + b15: + //SEG45 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=vbuz1_plus_2 lda i clc adc #2 sta i - //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG46 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 - bne b1_from_b3 + bne b1_from_b15 + jmp b3 + //SEG47 main::@3 + b3: + //SEG48 [27] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_inc__deref_pbuc1 + inc BORDERCOL + jmp b3 +} +//SEG49 bitmap_plot +bitmap_plot: { + .label _1 = $17 + .label _2 = $1b + .label x = $12 + .label y = $14 + .label plotter = $19 + .label _3 = $15 + //SEG50 [28] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 + ldy y + lda bitmap_plot_yhi,y + sta _3+1 + lda bitmap_plot_ylo,y + sta _3 + //SEG51 [29] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) -- vwuz1=vwuz2_band_vwuc1 + lda x + and #<$fff8 + sta _1 + lda x+1 + and #>$fff8 + sta _1+1 + //SEG52 [30] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) -- pbuz1=pbuz2_plus_vwuz3 + lda plotter + clc + adc _3 + sta _1 + lda plotter+1 + adc _3+1 + sta _1+1 + //SEG53 [31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) -- vbuz1=_lo_vwuz2 + lda x + sta _2 + //SEG54 [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 + ldy #0 + lda (plotter),y + ldy _2 + ora bitmap_plot_bit,y + ldy #0 + sta (plotter),y jmp breturn - //SEG20 main::@return + //SEG55 bitmap_plot::@return breturn: - //SEG21 [10] return [ ] ( main:2 [ ] ) + //SEG56 [33] return [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) rts } -//SEG22 init -init: { - .label _0 = 4 - .label _1 = 6 - .label _2 = 7 - .label _3 = 9 - .label point_idx = 3 - //SEG23 [11] (word~) init::$0 ← *((const word[4]) x_start#0 + (byte) init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$0 ] ) -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 +//SEG57 point_init +point_init: { + .label _0 = $1c + .label _1 = $1e + .label _2 = $1f + .label _3 = $21 + .label _4 = $23 + .label point_idx = $10 + //SEG58 [34] (word~) point_init::$0 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$0 ] ) -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 ldy point_idx lda x_start,y sta _0 @@ -438,23 +2510,23 @@ init: { rol _0+1 asl _0 rol _0+1 - //SEG24 [12] *((const word[4]) x_cur#0 + (byte) init::point_idx#0) ← (word~) init::$0 [ init::point_idx#0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 ] ) -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG59 [35] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$0 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) -- pwuc1_derefidx_vbuz1=vwuz2 ldy point_idx lda _0 sta x_cur,y lda _0+1 sta x_cur+1,y - //SEG25 [13] (byte~) init::$1 ← (byte) init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::point_idx#0 init::$1 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$1 ] ) -- vbuz1=vbuz2_ror_1 + //SEG60 [36] (byte~) point_init::$1 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$1 ] ) -- vbuz1=vbuz2_ror_1 lda point_idx lsr sta _1 - //SEG26 [14] (word~) init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) init::$1) [ init::point_idx#0 init::$2 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$2 ] ) -- vwuz1=_word_pbuc1_derefidx_vbuz2 + //SEG61 [37] (word~) point_init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) point_init::$1) [ point_init::point_idx#0 point_init::$2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$2 ] ) -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy _1 lda y_start,y sta _2 lda #0 sta _2+1 - //SEG27 [15] (word~) init::$3 ← (word~) init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$3 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$3 ] ) -- vwuz1=vwuz2_rol_4 + //SEG62 [38] (word~) point_init::$3 ← (word~) point_init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$3 ] ) -- vwuz1=vwuz2_rol_4 lda _2 asl sta _3 @@ -467,56 +2539,456 @@ init: { rol _3+1 asl _3 rol _3+1 - //SEG28 [16] *((const word[4]) y_cur#0 + (byte) init::point_idx#0) ← (word~) init::$3 [ ] ( main:2::init:7 [ main::i#2 ] ) -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG63 [39] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$3 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) -- pwuc1_derefidx_vbuz1=vwuz2 ldy point_idx lda _3 sta y_cur,y lda _3+1 sta y_cur+1,y + //SEG64 [40] (byte~) point_init::$4 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::$4 ] ) -- vbuz1=vbuz2_ror_1 + lda point_idx + lsr + sta _4 + //SEG65 [41] *((const byte[4]) delay#0 + (byte~) point_init::$4) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 + ldy _4 + lda #DELAY + sta delay,y jmp breturn - //SEG29 init::@return + //SEG66 point_init::@return breturn: - //SEG30 [17] return [ ] ( main:2::init:7 [ main::i#2 ] ) + //SEG67 [42] return [ ] ( main:2::point_init:20 [ main::i#2 ] ) rts +} +//SEG68 screen_fill +screen_fill: { + .const ch = $10 + .label screen = 4 + .label x = 6 + .label y = 3 + //SEG69 [44] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] + b1_from_screen_fill: + //SEG70 [44] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 + lda #0 + sta y + //SEG71 [44] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 + lda #SCREEN + sta screen+1 + jmp b1 + //SEG72 [44] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] + b1_from_b3: + //SEG73 [44] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy + //SEG74 [44] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy + jmp b1 + //SEG75 screen_fill::@1 + b1: + //SEG76 [45] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] + b2_from_b1: + //SEG77 [45] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuz1=vbuc1 + lda #0 + sta x + //SEG78 [45] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy + jmp b2 + //SEG79 [45] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] + b2_from_b2: + //SEG80 [45] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy + //SEG81 [45] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy + jmp b2 + //SEG82 screen_fill::@2 + b2: + //SEG83 [46] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) -- _deref_pbuz1=vbuc1 + lda #ch + ldy #0 + sta (screen),y + //SEG84 [47] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] ) -- pbuz1=_inc_pbuz1 + inc screen + bne !+ + inc screen+1 + !: + //SEG85 [48] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ) -- vbuz1=_inc_vbuz1 + inc x + //SEG86 [49] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda x + cmp #$28 + bne b2_from_b2 + jmp b3 + //SEG87 screen_fill::@3 + b3: + //SEG88 [50] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] ) -- vbuz1=_inc_vbuz1 + inc y + //SEG89 [51] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda y + cmp #$19 + bne b1_from_b3 + jmp breturn + //SEG90 screen_fill::@return + breturn: + //SEG91 [52] return [ ] ( main:2::screen_fill:17 [ ] ) + rts +} +//SEG92 bitmap_clear +bitmap_clear: { + .label bitmap = 8 + .label x = $a + .label y = 7 + .label _3 = $24 + //SEG93 [53] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0+(byte/signed byte/word/signed word/dword/signed dword) 0) w= *((const byte[256]) bitmap_plot_ylo#0+(byte/signed byte/word/signed word/dword/signed dword) 0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + lda bitmap_plot_ylo+0 + sta _3 + lda bitmap_plot_yhi+0 + sta _3+1 + //SEG94 [54] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) -- pbuz1=pbuz2 + lda _3 + sta bitmap + lda _3+1 + sta bitmap+1 + //SEG95 [55] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + b1_from_bitmap_clear: + //SEG96 [55] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + lda #0 + sta y + //SEG97 [55] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + jmp b1 + //SEG98 [55] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + b1_from_b3: + //SEG99 [55] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG100 [55] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + jmp b1 + //SEG101 bitmap_clear::@1 + b1: + //SEG102 [56] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + b2_from_b1: + //SEG103 [56] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 + lda #0 + sta x + //SEG104 [56] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + jmp b2 + //SEG105 [56] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + b2_from_b2: + //SEG106 [56] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG107 [56] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + jmp b2 + //SEG108 bitmap_clear::@2 + b2: + //SEG109 [57] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) -- _deref_pbuz1=vbuc1 + lda #0 + ldy #0 + sta (bitmap),y + //SEG110 [58] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] ) -- pbuz1=_inc_pbuz1 + inc bitmap + bne !+ + inc bitmap+1 + !: + //SEG111 [59] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ) -- vbuz1=_inc_vbuz1 + inc x + //SEG112 [60] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda x + cmp #$c8 + bne b2_from_b2 + jmp b3 + //SEG113 bitmap_clear::@3 + b3: + //SEG114 [61] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ) -- vbuz1=_inc_vbuz1 + inc y + //SEG115 [62] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda y + cmp #$28 + bne b1_from_b3 + jmp breturn + //SEG116 bitmap_clear::@return + breturn: + //SEG117 [63] return [ ] ( main:2::bitmap_clear:15 [ ] ) + rts +} +//SEG118 bitmap_init +bitmap_init: { + .label _3 = $26 + .label _4 = $27 + .label _5 = $28 + .label _6 = $29 + .label _7 = $2a + .label bits = $b + .label x = $c + .label y = $d + .label yoffs = $e + //SEG119 [65] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + b1_from_bitmap_init: + //SEG120 [65] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 + lda #0 + sta x + //SEG121 [65] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 + lda #$80 + sta bits + jmp b1 + //SEG122 [65] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + b1_from_b2: + //SEG123 [65] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG124 [65] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + jmp b1 + //SEG125 bitmap_init::@1 + b1: + //SEG126 [66] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + lda bits + ldy x + sta bitmap_plot_bit,y + //SEG127 [67] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] ) -- vbuz1=vbuz1_ror_1 + lsr bits + //SEG128 [68] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] ) -- vbuz1_neq_0_then_la1 + lda bits + bne b10_from_b1 + //SEG129 [69] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + b2_from_b1: + //SEG130 [69] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 + lda #$80 + sta bits + jmp b2 + //SEG131 bitmap_init::@2 + b2: + //SEG132 [70] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] ) -- vbuz1=_inc_vbuz1 + inc x + //SEG133 [71] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] ) -- vbuz1_neq_0_then_la1 + lda x + bne b1_from_b2 + //SEG134 [72] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + b3_from_b2: + //SEG135 [72] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + lda #BITMAP + sta yoffs+1 + //SEG136 [72] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 + lda #0 + sta y + jmp b3 + //SEG137 [72] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + b3_from_b4: + //SEG138 [72] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG139 [72] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + jmp b3 + //SEG140 bitmap_init::@3 + b3: + //SEG141 [73] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) -- vbuz1=vbuz2_band_vbuc1 + lda #7 + and y + sta _3 + //SEG142 [74] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] ) -- vbuz1=_lo_pbuz2 + lda yoffs + sta _4 + //SEG143 [75] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] ) -- vbuz1=vbuz2_bor_vbuz3 + lda _3 + ora _4 + sta _5 + //SEG144 [76] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + lda _5 + ldy y + sta bitmap_plot_ylo,y + //SEG145 [77] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ) -- vbuz1=_hi_pbuz2 + lda yoffs+1 + sta _6 + //SEG146 [78] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + lda _6 + ldy y + sta bitmap_plot_yhi,y + //SEG147 [79] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) -- vbuz1=vbuz2_band_vbuc1 + lda #7 + and y + sta _7 + //SEG148 [80] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda _7 + cmp #7 + bne b4_from_b3 + jmp b7 + //SEG149 bitmap_init::@7 + b7: + //SEG150 [81] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 + clc + lda yoffs + adc #<$28*8 + sta yoffs + lda yoffs+1 + adc #>$28*8 + sta yoffs+1 + //SEG151 [82] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + b4_from_b3: + b4_from_b7: + //SEG152 [82] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + jmp b4 + //SEG153 bitmap_init::@4 + b4: + //SEG154 [83] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ) -- vbuz1=_inc_vbuz1 + inc y + //SEG155 [84] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ) -- vbuz1_neq_0_then_la1 + lda y + bne b3_from_b4 + jmp breturn + //SEG156 bitmap_init::@return + breturn: + //SEG157 [85] return [ ] ( main:2::bitmap_init:13 [ ] ) + rts + //SEG158 [86] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + b10_from_b1: + jmp b10 + //SEG159 bitmap_init::@10 + b10: + //SEG160 [69] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + b2_from_b10: + //SEG161 [69] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + jmp b2 } x_start: .word $a, $14, $1e, $1e y_start: .byte $a, $a, $a, $14 x_cur: .fill 8, 0 y_cur: .fill 8, 0 + delay: .fill 4, 0 + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] (word~) init::$0 ← *((const word[4]) x_start#0 + (byte) init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$0 ] ) always clobbers reg byte a +Equivalence Class zp ZP_BYTE:39 [ bitmap_init::$4 ] has ALU potential. +Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ init::point_idx#0 ] -Statement [12] *((const word[4]) x_cur#0 + (byte) init::point_idx#0) ← (word~) init::$0 [ init::point_idx#0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 ] ) always clobbers reg byte a -Statement [13] (byte~) init::$1 ← (byte) init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::point_idx#0 init::$1 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$1 ] ) always clobbers reg byte a -Statement [14] (word~) init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) init::$1) [ init::point_idx#0 init::$2 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$2 ] ) always clobbers reg byte a -Statement [15] (word~) init::$3 ← (word~) init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$3 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$3 ] ) always clobbers reg byte a -Statement [16] *((const word[4]) y_cur#0 + (byte) init::point_idx#0) ← (word~) init::$3 [ ] ( main:2::init:7 [ main::i#2 ] ) always clobbers reg byte a -Statement [11] (word~) init::$0 ← *((const word[4]) x_start#0 + (byte) init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$0 ] ) always clobbers reg byte a -Statement [12] *((const word[4]) x_cur#0 + (byte) init::point_idx#0) ← (word~) init::$0 [ init::point_idx#0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 ] ) always clobbers reg byte a -Statement [13] (byte~) init::$1 ← (byte) init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::point_idx#0 init::$1 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$1 ] ) always clobbers reg byte a -Statement [14] (word~) init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) init::$1) [ init::point_idx#0 init::$2 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$2 ] ) always clobbers reg byte a -Statement [15] (word~) init::$3 ← (word~) init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$3 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$3 ] ) always clobbers reg byte a -Statement [16] *((const word[4]) y_cur#0 + (byte) init::point_idx#0) ← (word~) init::$3 [ ] ( main:2::init:7 [ main::i#2 ] ) always clobbers reg byte a -Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:3 [ init::point_idx#0 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:4 [ init::$0 ] : zp ZP_WORD:4 , -Potential registers zp ZP_BYTE:6 [ init::$1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:7 [ init::$2 ] : zp ZP_WORD:7 , -Potential registers zp ZP_WORD:9 [ init::$3 ] : zp ZP_WORD:9 , +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ main::$9 ] +Statement [28] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a +Statement [29] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a +Statement [30] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a +Statement [31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a +Statement [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Statement [34] (word~) point_init::$0 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ point_init::point_idx#0 ] +Statement [35] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$0 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) always clobbers reg byte a +Statement [36] (byte~) point_init::$1 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$1 ] ) always clobbers reg byte a +Statement [37] (word~) point_init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) point_init::$1) [ point_init::point_idx#0 point_init::$2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$2 ] ) always clobbers reg byte a +Statement [38] (word~) point_init::$3 ← (word~) point_init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$3 ] ) always clobbers reg byte a +Statement [39] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$3 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) always clobbers reg byte a +Statement [40] (byte~) point_init::$4 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::$4 ] ) always clobbers reg byte a +Statement [41] *((const byte[4]) delay#0 + (byte~) point_init::$4) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a +Statement [46] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ screen_fill::y#4 screen_fill::y#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ screen_fill::y#4 screen_fill::y#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ screen_fill::x#2 screen_fill::x#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ screen_fill::x#2 screen_fill::x#1 ] +Statement [53] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0+(byte/signed byte/word/signed word/dword/signed dword) 0) w= *((const byte[256]) bitmap_plot_ylo#0+(byte/signed byte/word/signed word/dword/signed dword) 0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a +Statement [54] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a +Statement [57] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ bitmap_clear::x#2 bitmap_clear::x#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:10 [ bitmap_clear::x#2 bitmap_clear::x#1 ] +Statement [73] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ bitmap_init::y#2 bitmap_init::y#1 ] +Statement [79] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [81] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) always clobbers reg byte a +Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [28] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a +Statement [29] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a +Statement [30] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a +Statement [31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a +Statement [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) always clobbers reg byte a reg byte y +Statement [34] (word~) point_init::$0 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$0 ] ) always clobbers reg byte a +Statement [35] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$0 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) always clobbers reg byte a +Statement [36] (byte~) point_init::$1 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$1 ] ) always clobbers reg byte a +Statement [37] (word~) point_init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) point_init::$1) [ point_init::point_idx#0 point_init::$2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$2 ] ) always clobbers reg byte a +Statement [38] (word~) point_init::$3 ← (word~) point_init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$3 ] ) always clobbers reg byte a +Statement [39] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$3 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) always clobbers reg byte a +Statement [40] (byte~) point_init::$4 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::$4 ] ) always clobbers reg byte a +Statement [41] *((const byte[4]) delay#0 + (byte~) point_init::$4) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a +Statement [46] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y +Statement [53] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0+(byte/signed byte/word/signed word/dword/signed dword) 0) w= *((const byte[256]) bitmap_plot_ylo#0+(byte/signed byte/word/signed word/dword/signed dword) 0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a +Statement [54] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a +Statement [57] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [73] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a +Statement [79] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [81] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , +Potential registers zp ZP_BYTE:3 [ screen_fill::y#4 screen_fill::y#1 ] : zp ZP_BYTE:3 , reg byte x , +Potential registers zp ZP_WORD:4 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] : zp ZP_WORD:4 , +Potential registers zp ZP_BYTE:6 [ screen_fill::x#2 screen_fill::x#1 ] : zp ZP_BYTE:6 , reg byte x , +Potential registers zp ZP_BYTE:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ] : zp ZP_BYTE:7 , reg byte x , +Potential registers zp ZP_WORD:8 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] : zp ZP_WORD:8 , +Potential registers zp ZP_BYTE:10 [ bitmap_clear::x#2 bitmap_clear::x#1 ] : zp ZP_BYTE:10 , reg byte x , +Potential registers zp ZP_BYTE:11 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:12 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:13 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:14 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp ZP_WORD:14 , +Potential registers zp ZP_BYTE:16 [ point_init::point_idx#0 ] : zp ZP_BYTE:16 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:17 [ main::$9 ] : zp ZP_BYTE:17 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:18 [ bitmap_plot::x#0 ] : zp ZP_WORD:18 , +Potential registers zp ZP_BYTE:20 [ bitmap_plot::y#0 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:21 [ bitmap_plot::$3 ] : zp ZP_WORD:21 , +Potential registers zp ZP_WORD:23 [ bitmap_plot::$1 ] : zp ZP_WORD:23 , +Potential registers zp ZP_WORD:25 [ bitmap_plot::plotter#1 ] : zp ZP_WORD:25 , +Potential registers zp ZP_BYTE:27 [ bitmap_plot::$2 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:28 [ point_init::$0 ] : zp ZP_WORD:28 , +Potential registers zp ZP_BYTE:30 [ point_init::$1 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:31 [ point_init::$2 ] : zp ZP_WORD:31 , +Potential registers zp ZP_WORD:33 [ point_init::$3 ] : zp ZP_WORD:33 , +Potential registers zp ZP_BYTE:35 [ point_init::$4 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:36 [ bitmap_clear::$3 ] : zp ZP_WORD:36 , +Potential registers zp ZP_BYTE:38 [ bitmap_init::$3 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:39 [ bitmap_init::$4 ] : zp ZP_BYTE:39 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:40 [ bitmap_init::$5 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:41 [ bitmap_init::$6 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:42 [ bitmap_init::$7 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Uplift Scope [init] 4: zp ZP_WORD:4 [ init::$0 ] 4: zp ZP_BYTE:6 [ init::$1 ] 4: zp ZP_WORD:7 [ init::$2 ] 4: zp ZP_WORD:9 [ init::$3 ] 3.17: zp ZP_BYTE:3 [ init::point_idx#0 ] +Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:8 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:10 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:36 [ bitmap_clear::$3 ] +Uplift Scope [screen_fill] 221.6: zp ZP_WORD:4 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] 218.83: zp ZP_BYTE:6 [ screen_fill::x#2 screen_fill::x#1 ] 20.17: zp ZP_BYTE:3 [ screen_fill::y#4 screen_fill::y#1 ] +Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:14 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:11 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22.5: zp ZP_BYTE:13 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:12 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:39 [ bitmap_init::$4 ] 22: zp ZP_BYTE:40 [ bitmap_init::$5 ] 22: zp ZP_BYTE:41 [ bitmap_init::$6 ] 22: zp ZP_BYTE:42 [ bitmap_init::$7 ] 11: zp ZP_BYTE:38 [ bitmap_init::$3 ] +Uplift Scope [main] 24.36: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 11: zp ZP_BYTE:17 [ main::$9 ] +Uplift Scope [bitmap_plot] 15: zp ZP_BYTE:20 [ bitmap_plot::y#0 ] 4: zp ZP_WORD:23 [ bitmap_plot::$1 ] 4: zp ZP_BYTE:27 [ bitmap_plot::$2 ] 3: zp ZP_WORD:18 [ bitmap_plot::x#0 ] 3: zp ZP_WORD:25 [ bitmap_plot::plotter#1 ] 1: zp ZP_WORD:21 [ bitmap_plot::$3 ] +Uplift Scope [point_init] 4: zp ZP_WORD:28 [ point_init::$0 ] 4: zp ZP_BYTE:30 [ point_init::$1 ] 4: zp ZP_WORD:31 [ point_init::$2 ] 4: zp ZP_WORD:33 [ point_init::$3 ] 4: zp ZP_BYTE:35 [ point_init::$4 ] 3: zp ZP_BYTE:16 [ point_init::point_idx#0 ] Uplift Scope [] -Uplifting [main] best 507 combination reg byte x [ main::i#2 main::i#1 ] -Uplifting [init] best 463 combination zp ZP_WORD:4 [ init::$0 ] reg byte a [ init::$1 ] zp ZP_WORD:7 [ init::$2 ] zp ZP_WORD:9 [ init::$3 ] reg byte x [ init::point_idx#0 ] -Uplifting [] best 463 combination -Coalescing zero page register with common assignment [ zp ZP_WORD:7 [ init::$2 ] ] with [ zp ZP_WORD:9 [ init::$3 ] ] - score: 1 -Coalescing zero page register [ zp ZP_WORD:4 [ init::$0 ] ] with [ zp ZP_WORD:7 [ init::$2 init::$3 ] ] -Allocated (was zp ZP_WORD:4) zp ZP_WORD:2 [ init::$0 init::$2 init::$3 ] +Uplifting [bitmap_clear] best 12881 combination zp ZP_WORD:8 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:36 [ bitmap_clear::$3 ] +Uplifting [screen_fill] best 11981 combination zp ZP_WORD:4 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] zp ZP_BYTE:3 [ screen_fill::y#4 screen_fill::y#1 ] +Uplifting [bitmap_init] best 11541 combination zp ZP_WORD:14 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:40 [ bitmap_init::$5 ] zp ZP_BYTE:41 [ bitmap_init::$6 ] zp ZP_BYTE:42 [ bitmap_init::$7 ] zp ZP_BYTE:38 [ bitmap_init::$3 ] +Limited combination testing to 100 combinations of 61440 possible. +Uplifting [main] best 11311 combination reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::$9 ] +Uplifting [bitmap_plot] best 11276 combination reg byte a [ bitmap_plot::y#0 ] zp ZP_WORD:23 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:18 [ bitmap_plot::x#0 ] zp ZP_WORD:25 [ bitmap_plot::plotter#1 ] zp ZP_WORD:21 [ bitmap_plot::$3 ] +Uplifting [point_init] best 11227 combination zp ZP_WORD:28 [ point_init::$0 ] reg byte a [ point_init::$1 ] zp ZP_WORD:31 [ point_init::$2 ] zp ZP_WORD:33 [ point_init::$3 ] reg byte a [ point_init::$4 ] reg byte x [ point_init::point_idx#0 ] +Uplifting [] best 11227 combination +Attempting to uplift remaining variables inzp ZP_BYTE:40 [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 11167 combination reg byte a [ bitmap_init::$5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:41 [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 11107 combination reg byte a [ bitmap_init::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:42 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 11047 combination reg byte a [ bitmap_init::$7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:3 [ screen_fill::y#4 screen_fill::y#1 ] +Uplifting [screen_fill] best 11047 combination zp ZP_BYTE:3 [ screen_fill::y#4 screen_fill::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Uplifting [bitmap_clear] best 11047 combination zp ZP_BYTE:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:38 [ bitmap_init::$3 ] +Uplifting [bitmap_init] best 11047 combination zp ZP_BYTE:38 [ bitmap_init::$3 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:8 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:36 [ bitmap_clear::$3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ bitmap_plot::$3 ] ] with [ zp ZP_WORD:25 [ bitmap_plot::plotter#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:31 [ point_init::$2 ] ] with [ zp ZP_WORD:33 [ point_init::$3 ] ] - score: 1 +Coalescing zero page register [ zp ZP_BYTE:3 [ screen_fill::y#4 screen_fill::y#1 ] ] with [ zp ZP_BYTE:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:38 [ bitmap_init::$3 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ] with [ zp ZP_WORD:8 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] with [ zp ZP_WORD:14 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp ZP_WORD:18 [ bitmap_plot::x#0 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 ] ] with [ zp ZP_WORD:28 [ point_init::$0 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$0 ] ] with [ zp ZP_WORD:31 [ point_init::$2 point_init::$3 ] ] +Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_init::$3 ] +Allocated (was zp ZP_WORD:4) zp ZP_WORD:3 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$0 point_init::$2 point_init::$3 ] +Allocated (was zp ZP_WORD:21) zp ZP_WORD:5 [ bitmap_plot::$3 bitmap_plot::plotter#1 ] +Allocated (was zp ZP_WORD:23) zp ZP_WORD:7 [ bitmap_plot::$1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -524,60 +2996,193 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(main) .pc = $80d "Program" //SEG1 Global Constants & labels + .label PROCPORT_DDR = 0 + .const PROCPORT_DDR_MEMORY_MASK = 7 + .label PROCPORT = 1 + .const PROCPORT_RAM_IO = $35 + .label BORDERCOL = $d020 + .label D011 = $d011 + .const VIC_BMM = $20 + .const VIC_DEN = $10 + .const VIC_RSEL = 8 + .label D018 = $d018 + .label CIA2_PORT_A = $dd00 + .label CIA2_PORT_A_DDR = $dd02 + .label BITMAP = $a000 + .label SCREEN = $8800 + .const DELAY = 8 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -b2_from_bbegin: - jmp b2 -//SEG4 @2 -b2: +//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +b9_from_bbegin: + jmp b9 +//SEG4 @9 +b9: //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @2 to main [phi:@2->main] -main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -bend_from_b2: +//SEG6 [3] phi from @9 to @end [phi:@9->@end] +bend_from_b9: jmp bend -//SEG8 @end +//SEG7 @end bend: -//SEG9 main +//SEG8 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - b1_from_main: - //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6 + .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f + //SEG9 asm { sei } + sei + //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #PROCPORT_DDR_MEMORY_MASK + sta PROCPORT_DDR + //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #PROCPORT_RAM_IO + sta PROCPORT + //SEG12 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 + sta D011 + jmp vicSelectGfxBank1 + //SEG13 main::vicSelectGfxBank1 + vicSelectGfxBank1: + //SEG14 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #3 + sta CIA2_PORT_A_DDR + //SEG15 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: + jmp vicSelectGfxBank1_toDd001 + //SEG16 main::vicSelectGfxBank1_toDd001 + vicSelectGfxBank1_toDd001: + jmp vicSelectGfxBank1_b1 + //SEG17 main::vicSelectGfxBank1_@1 + vicSelectGfxBank1_b1: + //SEG18 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + //SEG19 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + toD0181_from_vicSelectGfxBank1_b1: + jmp toD0181 + //SEG20 main::toD0181 + toD0181: + jmp b10 + //SEG21 main::@10 + b10: + //SEG22 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + //SEG23 [13] call bitmap_init [ ] ( main:2 [ ] ) + //SEG24 [64] phi from main::@10 to bitmap_init [phi:main::@10->bitmap_init] + bitmap_init_from_b10: + jsr bitmap_init + //SEG25 [14] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + b11_from_b10: + jmp b11 + //SEG26 main::@11 + b11: + //SEG27 [15] call bitmap_clear [ ] ( main:2 [ ] ) + jsr bitmap_clear + //SEG28 [16] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + b12_from_b11: + jmp b12 + //SEG29 main::@12 + b12: + //SEG30 [17] call screen_fill [ ] ( main:2 [ ] ) + //SEG31 [43] phi from main::@12 to screen_fill [phi:main::@12->screen_fill] + screen_fill_from_b12: + jsr screen_fill + //SEG32 [18] phi from main::@12 to main::@1 [phi:main::@12->main::@1] + b1_from_b12: + //SEG33 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - b1_from_b3: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG34 [18] phi from main::@15 to main::@1 [phi:main::@15->main::@1] + b1_from_b15: + //SEG35 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@15->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG36 main::@1 b1: - //SEG15 [6] (byte) init::point_idx#0 ← (byte) main::i#2 [ main::i#2 init::point_idx#0 ] ( main:2 [ main::i#2 init::point_idx#0 ] ) - // (byte) init::point_idx#0 = (byte) main::i#2 // register copy reg byte x - //SEG16 [7] call init [ main::i#2 ] ( main:2 [ main::i#2 ] ) - jsr init - jmp b3 - //SEG17 main::@3 - b3: - //SEG18 [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=vbuxx_plus_2 + //SEG37 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 [ main::i#2 point_init::point_idx#0 ] ( main:2 [ main::i#2 point_init::point_idx#0 ] ) + // (byte) point_init::point_idx#0 = (byte) main::i#2 // register copy reg byte x + //SEG38 [20] call point_init [ main::i#2 ] ( main:2 [ main::i#2 ] ) + jsr point_init + jmp b14 + //SEG39 main::@14 + b14: + //SEG40 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) -- vbuyy=vbuxx_ror_1 + txa + lsr + tay + //SEG41 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) -- vwuz1=pwuc1_derefidx_vbuxx + lda x_start,x + sta bitmap_plot.x + lda x_start+1,x + sta bitmap_plot.x+1 + //SEG42 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) [ main::i#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ( main:2 [ main::i#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + lda y_start,y + //SEG43 [24] call bitmap_plot [ main::i#2 ] ( main:2 [ main::i#2 ] ) + jsr bitmap_plot + jmp b15 + //SEG44 main::@15 + b15: + //SEG45 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=vbuxx_plus_2 inx inx - //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG46 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #8 - bne b1_from_b3 + bne b1_from_b15 + jmp b3 + //SEG47 main::@3 + b3: + //SEG48 [27] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_inc__deref_pbuc1 + inc BORDERCOL + jmp b3 +} +//SEG49 bitmap_plot +bitmap_plot: { + .label _1 = 7 + .label x = 3 + .label plotter = 5 + .label _3 = 5 + //SEG50 [28] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa + tay + lda bitmap_plot_yhi,y + sta _3+1 + lda bitmap_plot_ylo,y + sta _3 + //SEG51 [29] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) -- vwuz1=vwuz2_band_vwuc1 + lda x + and #<$fff8 + sta _1 + lda x+1 + and #>$fff8 + sta _1+1 + //SEG52 [30] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) -- pbuz1=pbuz1_plus_vwuz2 + lda plotter + clc + adc _1 + sta plotter + lda plotter+1 + adc _1+1 + sta plotter+1 + //SEG53 [31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) -- vbuaa=_lo_vwuz1 + lda x + //SEG54 [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa + tay + lda bitmap_plot_bit,y + ldy #0 + ora (plotter),y + ldy #0 + sta (plotter),y jmp breturn - //SEG20 main::@return + //SEG55 bitmap_plot::@return breturn: - //SEG21 [10] return [ ] ( main:2 [ ] ) + //SEG56 [33] return [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) rts } -//SEG22 init -init: { - .label _0 = 2 - .label _2 = 2 - .label _3 = 2 - //SEG23 [11] (word~) init::$0 ← *((const word[4]) x_start#0 + (byte) init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$0 ] ) -- vwuz1=pwuc1_derefidx_vbuxx_rol_4 +//SEG57 point_init +point_init: { + .label _0 = 3 + .label _2 = 3 + .label _3 = 3 + //SEG58 [34] (word~) point_init::$0 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$0 ] ) -- vwuz1=pwuc1_derefidx_vbuxx_rol_4 lda x_start,x sta _0 lda x_start+1,x @@ -590,21 +3195,21 @@ init: { rol _0+1 asl _0 rol _0+1 - //SEG24 [12] *((const word[4]) x_cur#0 + (byte) init::point_idx#0) ← (word~) init::$0 [ init::point_idx#0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 ] ) -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG59 [35] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$0 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) -- pwuc1_derefidx_vbuxx=vwuz1 lda _0 sta x_cur,x lda _0+1 sta x_cur+1,x - //SEG25 [13] (byte~) init::$1 ← (byte) init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::point_idx#0 init::$1 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$1 ] ) -- vbuaa=vbuxx_ror_1 + //SEG60 [36] (byte~) point_init::$1 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$1 ] ) -- vbuaa=vbuxx_ror_1 txa lsr - //SEG26 [14] (word~) init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) init::$1) [ init::point_idx#0 init::$2 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$2 ] ) -- vwuz1=_word_pbuc1_derefidx_vbuaa + //SEG61 [37] (word~) point_init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) point_init::$1) [ point_init::point_idx#0 point_init::$2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$2 ] ) -- vwuz1=_word_pbuc1_derefidx_vbuaa tay lda y_start,y sta _2 lda #0 sta _2+1 - //SEG27 [15] (word~) init::$3 ← (word~) init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$3 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$3 ] ) -- vwuz1=vwuz1_rol_4 + //SEG62 [38] (word~) point_init::$3 ← (word~) point_init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$3 ] ) -- vwuz1=vwuz1_rol_4 asl _3 rol _3+1 asl _3 @@ -613,66 +3218,548 @@ init: { rol _3+1 asl _3 rol _3+1 - //SEG28 [16] *((const word[4]) y_cur#0 + (byte) init::point_idx#0) ← (word~) init::$3 [ ] ( main:2::init:7 [ main::i#2 ] ) -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG63 [39] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$3 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) -- pwuc1_derefidx_vbuxx=vwuz1 lda _3 sta y_cur,x lda _3+1 sta y_cur+1,x + //SEG64 [40] (byte~) point_init::$4 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::$4 ] ) -- vbuaa=vbuxx_ror_1 + txa + lsr + //SEG65 [41] *((const byte[4]) delay#0 + (byte~) point_init::$4) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) -- pbuc1_derefidx_vbuaa=vbuc2 + tay + lda #DELAY + sta delay,y jmp breturn - //SEG29 init::@return + //SEG66 point_init::@return breturn: - //SEG30 [17] return [ ] ( main:2::init:7 [ main::i#2 ] ) + //SEG67 [42] return [ ] ( main:2::point_init:20 [ main::i#2 ] ) rts +} +//SEG68 screen_fill +screen_fill: { + .const ch = $10 + .label screen = 3 + .label y = 2 + //SEG69 [44] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] + b1_from_screen_fill: + //SEG70 [44] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 + lda #0 + sta y + //SEG71 [44] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 + lda #SCREEN + sta screen+1 + jmp b1 + //SEG72 [44] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] + b1_from_b3: + //SEG73 [44] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy + //SEG74 [44] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy + jmp b1 + //SEG75 screen_fill::@1 + b1: + //SEG76 [45] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] + b2_from_b1: + //SEG77 [45] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1 + ldx #0 + //SEG78 [45] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy + jmp b2 + //SEG79 [45] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] + b2_from_b2: + //SEG80 [45] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy + //SEG81 [45] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy + jmp b2 + //SEG82 screen_fill::@2 + b2: + //SEG83 [46] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) -- _deref_pbuz1=vbuc1 + lda #ch + ldy #0 + sta (screen),y + //SEG84 [47] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] ) -- pbuz1=_inc_pbuz1 + inc screen + bne !+ + inc screen+1 + !: + //SEG85 [48] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG86 [49] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #$28 + bne b2_from_b2 + jmp b3 + //SEG87 screen_fill::@3 + b3: + //SEG88 [50] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] ) -- vbuz1=_inc_vbuz1 + inc y + //SEG89 [51] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda y + cmp #$19 + bne b1_from_b3 + jmp breturn + //SEG90 screen_fill::@return + breturn: + //SEG91 [52] return [ ] ( main:2::screen_fill:17 [ ] ) + rts +} +//SEG92 bitmap_clear +bitmap_clear: { + .label bitmap = 3 + .label y = 2 + .label _3 = 3 + //SEG93 [53] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0+(byte/signed byte/word/signed word/dword/signed dword) 0) w= *((const byte[256]) bitmap_plot_ylo#0+(byte/signed byte/word/signed word/dword/signed dword) 0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + lda bitmap_plot_ylo+0 + sta _3 + lda bitmap_plot_yhi+0 + sta _3+1 + //SEG94 [54] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) + // (byte*~) bitmap_clear::bitmap#5 = (byte*)(word~) bitmap_clear::$3 // register copy zp ZP_WORD:3 + //SEG95 [55] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + b1_from_bitmap_clear: + //SEG96 [55] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + lda #0 + sta y + //SEG97 [55] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + jmp b1 + //SEG98 [55] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + b1_from_b3: + //SEG99 [55] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG100 [55] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + jmp b1 + //SEG101 bitmap_clear::@1 + b1: + //SEG102 [56] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + b2_from_b1: + //SEG103 [56] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 + ldx #0 + //SEG104 [56] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + jmp b2 + //SEG105 [56] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + b2_from_b2: + //SEG106 [56] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG107 [56] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + jmp b2 + //SEG108 bitmap_clear::@2 + b2: + //SEG109 [57] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) -- _deref_pbuz1=vbuc1 + lda #0 + ldy #0 + sta (bitmap),y + //SEG110 [58] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] ) -- pbuz1=_inc_pbuz1 + inc bitmap + bne !+ + inc bitmap+1 + !: + //SEG111 [59] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG112 [60] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #$c8 + bne b2_from_b2 + jmp b3 + //SEG113 bitmap_clear::@3 + b3: + //SEG114 [61] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ) -- vbuz1=_inc_vbuz1 + inc y + //SEG115 [62] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda y + cmp #$28 + bne b1_from_b3 + jmp breturn + //SEG116 bitmap_clear::@return + breturn: + //SEG117 [63] return [ ] ( main:2::bitmap_clear:15 [ ] ) + rts +} +//SEG118 bitmap_init +bitmap_init: { + .label _3 = 2 + .label yoffs = 3 + //SEG119 [65] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + b1_from_bitmap_init: + //SEG120 [65] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + ldx #0 + //SEG121 [65] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + lda #$80 + jmp b1 + //SEG122 [65] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + b1_from_b2: + //SEG123 [65] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG124 [65] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + jmp b1 + //SEG125 bitmap_init::@1 + b1: + //SEG126 [66] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_bit,x + //SEG127 [67] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] ) -- vbuaa=vbuaa_ror_1 + lsr + //SEG128 [68] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] ) -- vbuaa_neq_0_then_la1 + cmp #0 + bne b10_from_b1 + //SEG129 [69] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + b2_from_b1: + //SEG130 [69] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + lda #$80 + jmp b2 + //SEG131 bitmap_init::@2 + b2: + //SEG132 [70] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG133 [71] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] ) -- vbuxx_neq_0_then_la1 + cpx #0 + bne b1_from_b2 + //SEG134 [72] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + b3_from_b2: + //SEG135 [72] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + lda #BITMAP + sta yoffs+1 + //SEG136 [72] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + ldx #0 + jmp b3 + //SEG137 [72] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + b3_from_b4: + //SEG138 [72] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG139 [72] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + jmp b3 + //SEG140 bitmap_init::@3 + b3: + //SEG141 [73] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) -- vbuz1=vbuxx_band_vbuc1 + txa + and #7 + sta _3 + //SEG142 [74] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] ) -- vbuaa=_lo_pbuz1 + lda yoffs + //SEG143 [75] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] ) -- vbuaa=vbuz1_bor_vbuaa + ora _3 + //SEG144 [76] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_ylo,x + //SEG145 [77] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ) -- vbuaa=_hi_pbuz1 + lda yoffs+1 + //SEG146 [78] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_yhi,x + //SEG147 [79] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) -- vbuaa=vbuxx_band_vbuc1 + txa + and #7 + //SEG148 [80] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) -- vbuaa_neq_vbuc1_then_la1 + cmp #7 + bne b4_from_b3 + jmp b7 + //SEG149 bitmap_init::@7 + b7: + //SEG150 [81] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 + clc + lda yoffs + adc #<$28*8 + sta yoffs + lda yoffs+1 + adc #>$28*8 + sta yoffs+1 + //SEG151 [82] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + b4_from_b3: + b4_from_b7: + //SEG152 [82] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + jmp b4 + //SEG153 bitmap_init::@4 + b4: + //SEG154 [83] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG155 [84] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ) -- vbuxx_neq_0_then_la1 + cpx #0 + bne b3_from_b4 + jmp breturn + //SEG156 bitmap_init::@return + breturn: + //SEG157 [85] return [ ] ( main:2::bitmap_init:13 [ ] ) + rts + //SEG158 [86] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + b10_from_b1: + jmp b10 + //SEG159 bitmap_init::@10 + b10: + //SEG160 [69] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + b2_from_b10: + //SEG161 [69] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + jmp b2 } x_start: .word $a, $14, $1e, $1e y_start: .byte $a, $a, $a, $14 x_cur: .fill 8, 0 y_cur: .fill 8, 0 + delay: .fill 4, 0 + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b2 +Removing instruction jmp b9 Removing instruction jmp bend +Removing instruction jmp vicSelectGfxBank1 +Removing instruction jmp vicSelectGfxBank1_toDd001 +Removing instruction jmp vicSelectGfxBank1_b1 +Removing instruction jmp toD0181 +Removing instruction jmp b10 +Removing instruction jmp b11 +Removing instruction jmp b12 Removing instruction jmp b1 +Removing instruction jmp b14 +Removing instruction jmp b15 Removing instruction jmp b3 Removing instruction jmp breturn Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b3 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b3 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b3 +Removing instruction jmp b7 +Removing instruction jmp b4 +Removing instruction jmp breturn +Removing instruction jmp b10 Succesful ASM optimization Pass5NextJumpElimination +Removing instruction ldy #0 +Replacing instruction ldy #0 with TAY +Succesful ASM optimization Pass5UnnecesaryLoadElimination +Replacing label b1_from_b15 with b1 +Replacing label b2_from_b2 with b2 Replacing label b1_from_b3 with b1 +Replacing label b2_from_b2 with b2 +Replacing label b1_from_b3 with b1 +Replacing label b10_from_b1 with b10 +Replacing label b1_from_b2 with b1 +Replacing label b4_from_b3 with b4 +Replacing label b3_from_b4 with b3 Removing instruction bbegin: -Removing instruction b2_from_bbegin: -Removing instruction main_from_b2: -Removing instruction bend_from_b2: +Removing instruction b9_from_bbegin: +Removing instruction bend_from_b9: +Removing instruction vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: +Removing instruction vicSelectGfxBank1_toDd001: +Removing instruction toD0181_from_vicSelectGfxBank1_b1: +Removing instruction toD0181: +Removing instruction b11_from_b10: +Removing instruction b12_from_b11: +Removing instruction screen_fill_from_b12: +Removing instruction b1_from_b15: Removing instruction b1_from_b3: +Removing instruction b2_from_b1: +Removing instruction b2_from_b2: +Removing instruction b1_from_b3: +Removing instruction b2_from_b1: +Removing instruction b2_from_b2: +Removing instruction b1_from_b2: +Removing instruction b3_from_b4: +Removing instruction b4_from_b3: +Removing instruction b4_from_b7: +Removing instruction b10_from_b1: +Removing instruction b2_from_b10: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b2: +Removing instruction b9: Removing instruction bend: -Removing instruction b1_from_main: +Removing instruction vicSelectGfxBank1: +Removing instruction vicSelectGfxBank1_b1: +Removing instruction b10: +Removing instruction bitmap_init_from_b10: +Removing instruction b11: +Removing instruction b12: +Removing instruction b1_from_b12: +Removing instruction b14: +Removing instruction b15: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction b1_from_screen_fill: Removing instruction b3: Removing instruction breturn: +Removing instruction b1_from_bitmap_clear: +Removing instruction b3: +Removing instruction breturn: +Removing instruction b1_from_bitmap_init: +Removing instruction b2_from_b1: +Removing instruction b3_from_b2: +Removing instruction b7: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination +Skipping double jump to b2 in bne b10 +Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp b1 +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b1 +Removing instruction jmp b3 Succesful ASM optimization Pass5NextJumpElimination +Removing instruction b10: +Succesful ASM optimization Pass5UnusedLabelElimination +Removing unreachable instruction jmp b2 +Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @2 +(label) @9 (label) @begin (label) @end -(void()) init((byte) init::point_idx) -(word~) init::$0 $0 zp ZP_WORD:2 4.0 -(byte~) init::$1 reg byte a 4.0 -(word~) init::$2 $2 zp ZP_WORD:2 4.0 -(word~) init::$3 $3 zp ZP_WORD:2 4.0 -(label) init::@return -(byte) init::point_idx -(byte) init::point_idx#0 reg byte x 3.166666666666667 +(byte*) BITMAP +(const byte*) BITMAP#0 BITMAP = ((byte*))(word/dword/signed dword) 40960 +(byte*) BORDERCOL +(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte*) CIA2_PORT_A +(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 +(byte*) CIA2_PORT_A_DDR +(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) D011 +(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265 +(byte*) D018 +(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272 +(byte) DELAY +(const byte) DELAY#0 DELAY = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte*) PROCPORT +(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) PROCPORT_DDR +(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) PROCPORT_DDR_MEMORY_MASK +(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_RAM_IO +(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/dword/signed dword) 34816 +(byte) VIC_BMM +(const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32 +(byte) VIC_DEN +(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte) VIC_RSEL +(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(void()) bitmap_clear() +(word~) bitmap_clear::$3 $3 zp ZP_WORD:3 2.0 +(label) bitmap_clear::@1 +(label) bitmap_clear::@2 +(label) bitmap_clear::@3 +(label) bitmap_clear::@return +(byte*) bitmap_clear::bitmap +(byte*) bitmap_clear::bitmap#1 bitmap zp ZP_WORD:3 42.599999999999994 +(byte*) bitmap_clear::bitmap#2 bitmap zp ZP_WORD:3 157.0 +(byte*) bitmap_clear::bitmap#3 bitmap zp ZP_WORD:3 24.0 +(byte*~) bitmap_clear::bitmap#5 bitmap zp ZP_WORD:3 4.0 +(byte) bitmap_clear::x +(byte) bitmap_clear::x#1 reg byte x 151.5 +(byte) bitmap_clear::x#2 reg byte x 67.33333333333333 +(byte) bitmap_clear::y +(byte) bitmap_clear::y#1 y zp ZP_BYTE:2 16.5 +(byte) bitmap_clear::y#4 y zp ZP_BYTE:2 3.6666666666666665 +(void()) bitmap_init((byte*) bitmap_init::bitmap) +(byte~) bitmap_init::$3 $3 zp ZP_BYTE:2 11.0 +(byte~) bitmap_init::$4 reg byte a 22.0 +(byte~) bitmap_init::$5 reg byte a 22.0 +(byte~) bitmap_init::$6 reg byte a 22.0 +(byte~) bitmap_init::$7 reg byte a 22.0 +(label) bitmap_init::@1 +(label) bitmap_init::@10 +(label) bitmap_init::@2 +(label) bitmap_init::@3 +(label) bitmap_init::@4 +(label) bitmap_init::@7 +(label) bitmap_init::@return +(byte*) bitmap_init::bitmap +(byte) bitmap_init::bits +(byte) bitmap_init::bits#1 reg byte a 11.0 +(byte) bitmap_init::bits#3 reg byte a 16.5 +(byte) bitmap_init::bits#4 reg byte a 7.333333333333333 +(byte) bitmap_init::x +(byte) bitmap_init::x#1 reg byte x 16.5 +(byte) bitmap_init::x#2 reg byte x 5.5 +(byte) bitmap_init::y +(byte) bitmap_init::y#1 reg byte x 16.5 +(byte) bitmap_init::y#2 reg byte x 6.0 +(byte*) bitmap_init::yoffs +(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:3 22.0 +(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:3 6.111111111111112 +(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:3 11.0 +(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) +(word~) bitmap_plot::$1 $1 zp ZP_WORD:7 4.0 +(byte~) bitmap_plot::$2 reg byte a 4.0 +(word~) bitmap_plot::$3 $3 zp ZP_WORD:5 1.0 +(label) bitmap_plot::@return +(byte*) bitmap_plot::plotter +(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:5 3.0 +(word) bitmap_plot::x +(word) bitmap_plot::x#0 x zp ZP_WORD:3 3.0 +(byte) bitmap_plot::y +(byte) bitmap_plot::y#0 reg byte a 15.0 +(byte[256]) bitmap_plot_bit +(const byte[256]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( 256, 0) } +(byte[256]) bitmap_plot_yhi +(const byte[256]) bitmap_plot_yhi#0 bitmap_plot_yhi = { fill( 256, 0) } +(byte[256]) bitmap_plot_ylo +(const byte[256]) bitmap_plot_ylo#0 bitmap_plot_ylo = { fill( 256, 0) } +(byte[4]) delay +(const byte[4]) delay#0 delay = { fill( 4, 0) } (void()) main() +(byte~) main::$9 reg byte y 11.0 (label) main::@1 +(label) main::@10 +(label) main::@11 +(label) main::@12 +(label) main::@14 +(label) main::@15 (label) main::@3 -(label) main::@return (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#2 reg byte x 7.857142857142857 +(label) main::toD0181 +(word~) main::toD0181_$0 +(word~) main::toD0181_$1 +(word~) main::toD0181_$2 +(byte~) main::toD0181_$3 +(word~) main::toD0181_$4 +(byte~) main::toD0181_$5 +(byte~) main::toD0181_$6 +(byte~) main::toD0181_$7 +(byte~) main::toD0181_$8 +(byte*) main::toD0181_gfx +(byte) main::toD0181_return +(const byte) main::toD0181_return#0 toD0181_return = >((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 +(byte*) main::toD0181_screen +(label) main::vicSelectGfxBank1 +(byte~) main::vicSelectGfxBank1_$0 +(label) main::vicSelectGfxBank1_@1 +(byte*) main::vicSelectGfxBank1_gfx +(label) main::vicSelectGfxBank1_toDd001 +(word~) main::vicSelectGfxBank1_toDd001_$0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(byte~) main::vicSelectGfxBank1_toDd001_$2 +(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3 +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte) main::vicSelectGfxBank1_toDd001_return +(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(void()) point_init((byte) point_init::point_idx) +(word~) point_init::$0 $0 zp ZP_WORD:3 4.0 +(byte~) point_init::$1 reg byte a 4.0 +(word~) point_init::$2 $2 zp ZP_WORD:3 4.0 +(word~) point_init::$3 $3 zp ZP_WORD:3 4.0 +(byte~) point_init::$4 reg byte a 4.0 +(label) point_init::@return +(byte) point_init::point_idx +(byte) point_init::point_idx#0 reg byte x 2.9999999999999996 +(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch) +(label) screen_fill::@1 +(label) screen_fill::@2 +(label) screen_fill::@3 +(label) screen_fill::@return +(byte) screen_fill::ch +(const byte) screen_fill::ch#0 ch = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte*) screen_fill::screen +(byte*) screen_fill::screen#1 screen zp ZP_WORD:3 42.599999999999994 +(byte*) screen_fill::screen#2 screen zp ZP_WORD:3 157.0 +(byte*) screen_fill::screen#3 screen zp ZP_WORD:3 22.0 +(byte) screen_fill::x +(byte) screen_fill::x#1 reg byte x 151.5 +(byte) screen_fill::x#2 reg byte x 67.33333333333333 +(byte) screen_fill::y +(byte) screen_fill::y#1 y zp ZP_BYTE:2 16.5 +(byte) screen_fill::y#4 y zp ZP_BYTE:2 3.6666666666666665 (word[4]) x_cur (const word[4]) x_cur#0 x_cur = { fill( 4, 0) } (word[4]) x_start @@ -683,57 +3770,183 @@ FINAL SYMBOL TABLE (const byte[4]) y_start#0 y_start = { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 } reg byte x [ main::i#2 main::i#1 ] -reg byte x [ init::point_idx#0 ] -zp ZP_WORD:2 [ init::$0 init::$2 init::$3 ] -reg byte a [ init::$1 ] +zp ZP_BYTE:2 [ screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_init::$3 ] +zp ZP_WORD:3 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$0 point_init::$2 point_init::$3 ] +reg byte x [ screen_fill::x#2 screen_fill::x#1 ] +reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] +reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] +reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] +reg byte x [ point_init::point_idx#0 ] +reg byte y [ main::$9 ] +reg byte a [ bitmap_plot::y#0 ] +zp ZP_WORD:5 [ bitmap_plot::$3 bitmap_plot::plotter#1 ] +zp ZP_WORD:7 [ bitmap_plot::$1 ] +reg byte a [ bitmap_plot::$2 ] +reg byte a [ point_init::$1 ] +reg byte a [ point_init::$4 ] +reg byte a [ bitmap_init::$4 ] +reg byte a [ bitmap_init::$5 ] +reg byte a [ bitmap_init::$6 ] +reg byte a [ bitmap_init::$7 ] FINAL ASSEMBLER -Score: 328 +Score: 8510 //SEG0 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" //SEG1 Global Constants & labels + .label PROCPORT_DDR = 0 + .const PROCPORT_DDR_MEMORY_MASK = 7 + .label PROCPORT = 1 + .const PROCPORT_RAM_IO = $35 + .label BORDERCOL = $d020 + .label D011 = $d011 + .const VIC_BMM = $20 + .const VIC_DEN = $10 + .const VIC_RSEL = 8 + .label D018 = $d018 + .label CIA2_PORT_A = $dd00 + .label CIA2_PORT_A_DDR = $dd02 + .label BITMAP = $a000 + .label SCREEN = $8800 + .const DELAY = 8 //SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 +//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +//SEG4 @9 //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @2 to main [phi:@2->main] jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG6 [3] phi from @9 to @end [phi:@9->@end] +//SEG7 @end +//SEG8 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6 + .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f + //SEG9 asm { sei } + sei + //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #PROCPORT_DDR_MEMORY_MASK + sta PROCPORT_DDR + //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #PROCPORT_RAM_IO + sta PROCPORT + //SEG12 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 + sta D011 + //SEG13 main::vicSelectGfxBank1 + //SEG14 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #3 + sta CIA2_PORT_A_DDR + //SEG15 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG16 main::vicSelectGfxBank1_toDd001 + //SEG17 main::vicSelectGfxBank1_@1 + //SEG18 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + //SEG19 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + //SEG20 main::toD0181 + //SEG21 main::@10 + //SEG22 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + //SEG23 [13] call bitmap_init [ ] ( main:2 [ ] ) + //SEG24 [64] phi from main::@10 to bitmap_init [phi:main::@10->bitmap_init] + jsr bitmap_init + //SEG25 [14] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + //SEG26 main::@11 + //SEG27 [15] call bitmap_clear [ ] ( main:2 [ ] ) + jsr bitmap_clear + //SEG28 [16] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG29 main::@12 + //SEG30 [17] call screen_fill [ ] ( main:2 [ ] ) + //SEG31 [43] phi from main::@12 to screen_fill [phi:main::@12->screen_fill] + jsr screen_fill + //SEG32 [18] phi from main::@12 to main::@1 [phi:main::@12->main::@1] + //SEG33 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG34 [18] phi from main::@15 to main::@1 [phi:main::@15->main::@1] + //SEG35 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@15->main::@1#0] -- register_copy + //SEG36 main::@1 b1: - //SEG15 [6] (byte) init::point_idx#0 ← (byte) main::i#2 [ main::i#2 init::point_idx#0 ] ( main:2 [ main::i#2 init::point_idx#0 ] ) - // (byte) init::point_idx#0 = (byte) main::i#2 // register copy reg byte x - //SEG16 [7] call init [ main::i#2 ] ( main:2 [ main::i#2 ] ) - jsr init - //SEG17 main::@3 - //SEG18 [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=vbuxx_plus_2 + //SEG37 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 [ main::i#2 point_init::point_idx#0 ] ( main:2 [ main::i#2 point_init::point_idx#0 ] ) + // (byte) point_init::point_idx#0 = (byte) main::i#2 // register copy reg byte x + //SEG38 [20] call point_init [ main::i#2 ] ( main:2 [ main::i#2 ] ) + jsr point_init + //SEG39 main::@14 + //SEG40 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) -- vbuyy=vbuxx_ror_1 + txa + lsr + tay + //SEG41 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) -- vwuz1=pwuc1_derefidx_vbuxx + lda x_start,x + sta bitmap_plot.x + lda x_start+1,x + sta bitmap_plot.x+1 + //SEG42 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) [ main::i#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ( main:2 [ main::i#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + lda y_start,y + //SEG43 [24] call bitmap_plot [ main::i#2 ] ( main:2 [ main::i#2 ] ) + jsr bitmap_plot + //SEG44 main::@15 + //SEG45 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=vbuxx_plus_2 inx inx - //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG46 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1 - //SEG20 main::@return - //SEG21 [10] return [ ] ( main:2 [ ] ) + //SEG47 main::@3 + b3: + //SEG48 [27] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_inc__deref_pbuc1 + inc BORDERCOL + jmp b3 +} +//SEG49 bitmap_plot +bitmap_plot: { + .label _1 = 7 + .label x = 3 + .label plotter = 5 + .label _3 = 5 + //SEG50 [28] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa + tay + lda bitmap_plot_yhi,y + sta _3+1 + lda bitmap_plot_ylo,y + sta _3 + //SEG51 [29] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) -- vwuz1=vwuz2_band_vwuc1 + lda x + and #<$fff8 + sta _1 + lda x+1 + and #>$fff8 + sta _1+1 + //SEG52 [30] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) -- pbuz1=pbuz1_plus_vwuz2 + lda plotter + clc + adc _1 + sta plotter + lda plotter+1 + adc _1+1 + sta plotter+1 + //SEG53 [31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) -- vbuaa=_lo_vwuz1 + lda x + //SEG54 [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa + tay + lda bitmap_plot_bit,y + ldy #0 + ora (plotter),y + sta (plotter),y + //SEG55 bitmap_plot::@return + //SEG56 [33] return [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) rts } -//SEG22 init -init: { - .label _0 = 2 - .label _2 = 2 - .label _3 = 2 - //SEG23 [11] (word~) init::$0 ← *((const word[4]) x_start#0 + (byte) init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$0 ] ) -- vwuz1=pwuc1_derefidx_vbuxx_rol_4 +//SEG57 point_init +point_init: { + .label _0 = 3 + .label _2 = 3 + .label _3 = 3 + //SEG58 [34] (word~) point_init::$0 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$0 ] ) -- vwuz1=pwuc1_derefidx_vbuxx_rol_4 lda x_start,x sta _0 lda x_start+1,x @@ -746,21 +3959,21 @@ init: { rol _0+1 asl _0 rol _0+1 - //SEG24 [12] *((const word[4]) x_cur#0 + (byte) init::point_idx#0) ← (word~) init::$0 [ init::point_idx#0 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 ] ) -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG59 [35] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$0 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) -- pwuc1_derefidx_vbuxx=vwuz1 lda _0 sta x_cur,x lda _0+1 sta x_cur+1,x - //SEG25 [13] (byte~) init::$1 ← (byte) init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::point_idx#0 init::$1 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$1 ] ) -- vbuaa=vbuxx_ror_1 + //SEG60 [36] (byte~) point_init::$1 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::$1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$1 ] ) -- vbuaa=vbuxx_ror_1 txa lsr - //SEG26 [14] (word~) init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) init::$1) [ init::point_idx#0 init::$2 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$2 ] ) -- vwuz1=_word_pbuc1_derefidx_vbuaa + //SEG61 [37] (word~) point_init::$2 ← ((word)) *((const byte[4]) y_start#0 + (byte~) point_init::$1) [ point_init::point_idx#0 point_init::$2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$2 ] ) -- vwuz1=_word_pbuc1_derefidx_vbuaa tay lda y_start,y sta _2 lda #0 sta _2+1 - //SEG27 [15] (word~) init::$3 ← (word~) init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ init::point_idx#0 init::$3 ] ( main:2::init:7 [ main::i#2 init::point_idx#0 init::$3 ] ) -- vwuz1=vwuz1_rol_4 + //SEG62 [38] (word~) point_init::$3 ← (word~) point_init::$2 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::$3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$3 ] ) -- vwuz1=vwuz1_rol_4 asl _3 rol _3+1 asl _3 @@ -769,17 +3982,227 @@ init: { rol _3+1 asl _3 rol _3+1 - //SEG28 [16] *((const word[4]) y_cur#0 + (byte) init::point_idx#0) ← (word~) init::$3 [ ] ( main:2::init:7 [ main::i#2 ] ) -- pwuc1_derefidx_vbuxx=vwuz1 + //SEG63 [39] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$3 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) -- pwuc1_derefidx_vbuxx=vwuz1 lda _3 sta y_cur,x lda _3+1 sta y_cur+1,x - //SEG29 init::@return - //SEG30 [17] return [ ] ( main:2::init:7 [ main::i#2 ] ) + //SEG64 [40] (byte~) point_init::$4 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::$4 ] ) -- vbuaa=vbuxx_ror_1 + txa + lsr + //SEG65 [41] *((const byte[4]) delay#0 + (byte~) point_init::$4) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) -- pbuc1_derefidx_vbuaa=vbuc2 + tay + lda #DELAY + sta delay,y + //SEG66 point_init::@return + //SEG67 [42] return [ ] ( main:2::point_init:20 [ main::i#2 ] ) rts +} +//SEG68 screen_fill +screen_fill: { + .const ch = $10 + .label screen = 3 + .label y = 2 + //SEG69 [44] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] + //SEG70 [44] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 + lda #0 + sta y + //SEG71 [44] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 + lda #SCREEN + sta screen+1 + //SEG72 [44] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] + //SEG73 [44] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy + //SEG74 [44] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy + //SEG75 screen_fill::@1 + b1: + //SEG76 [45] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] + //SEG77 [45] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1 + ldx #0 + //SEG78 [45] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy + //SEG79 [45] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] + //SEG80 [45] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy + //SEG81 [45] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy + //SEG82 screen_fill::@2 + b2: + //SEG83 [46] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) -- _deref_pbuz1=vbuc1 + lda #ch + ldy #0 + sta (screen),y + //SEG84 [47] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] ) -- pbuz1=_inc_pbuz1 + inc screen + bne !+ + inc screen+1 + !: + //SEG85 [48] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG86 [49] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #$28 + bne b2 + //SEG87 screen_fill::@3 + //SEG88 [50] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] ) -- vbuz1=_inc_vbuz1 + inc y + //SEG89 [51] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda y + cmp #$19 + bne b1 + //SEG90 screen_fill::@return + //SEG91 [52] return [ ] ( main:2::screen_fill:17 [ ] ) + rts +} +//SEG92 bitmap_clear +bitmap_clear: { + .label bitmap = 3 + .label y = 2 + .label _3 = 3 + //SEG93 [53] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0+(byte/signed byte/word/signed word/dword/signed dword) 0) w= *((const byte[256]) bitmap_plot_ylo#0+(byte/signed byte/word/signed word/dword/signed dword) 0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + lda bitmap_plot_ylo+0 + sta _3 + lda bitmap_plot_yhi+0 + sta _3+1 + //SEG94 [54] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) + // (byte*~) bitmap_clear::bitmap#5 = (byte*)(word~) bitmap_clear::$3 // register copy zp ZP_WORD:3 + //SEG95 [55] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG96 [55] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + lda #0 + sta y + //SEG97 [55] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG98 [55] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG99 [55] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG100 [55] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG101 bitmap_clear::@1 + b1: + //SEG102 [56] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG103 [56] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 + ldx #0 + //SEG104 [56] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG105 [56] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG106 [56] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG107 [56] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG108 bitmap_clear::@2 + b2: + //SEG109 [57] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) -- _deref_pbuz1=vbuc1 + lda #0 + tay + sta (bitmap),y + //SEG110 [58] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] ) -- pbuz1=_inc_pbuz1 + inc bitmap + bne !+ + inc bitmap+1 + !: + //SEG111 [59] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG112 [60] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #$c8 + bne b2 + //SEG113 bitmap_clear::@3 + //SEG114 [61] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ) -- vbuz1=_inc_vbuz1 + inc y + //SEG115 [62] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda y + cmp #$28 + bne b1 + //SEG116 bitmap_clear::@return + //SEG117 [63] return [ ] ( main:2::bitmap_clear:15 [ ] ) + rts +} +//SEG118 bitmap_init +bitmap_init: { + .label _3 = 2 + .label yoffs = 3 + //SEG119 [65] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG120 [65] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + ldx #0 + //SEG121 [65] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + lda #$80 + //SEG122 [65] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG123 [65] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG124 [65] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG125 bitmap_init::@1 + b1: + //SEG126 [66] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_bit,x + //SEG127 [67] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] ) -- vbuaa=vbuaa_ror_1 + lsr + //SEG128 [68] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] ) -- vbuaa_neq_0_then_la1 + cmp #0 + bne b2 + //SEG129 [69] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG130 [69] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + lda #$80 + //SEG131 bitmap_init::@2 + b2: + //SEG132 [70] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG133 [71] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] ) -- vbuxx_neq_0_then_la1 + cpx #0 + bne b1 + //SEG134 [72] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG135 [72] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + lda #BITMAP + sta yoffs+1 + //SEG136 [72] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + ldx #0 + //SEG137 [72] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG138 [72] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG139 [72] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG140 bitmap_init::@3 + b3: + //SEG141 [73] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) -- vbuz1=vbuxx_band_vbuc1 + txa + and #7 + sta _3 + //SEG142 [74] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] ) -- vbuaa=_lo_pbuz1 + lda yoffs + //SEG143 [75] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] ) -- vbuaa=vbuz1_bor_vbuaa + ora _3 + //SEG144 [76] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_ylo,x + //SEG145 [77] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ) -- vbuaa=_hi_pbuz1 + lda yoffs+1 + //SEG146 [78] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_yhi,x + //SEG147 [79] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) -- vbuaa=vbuxx_band_vbuc1 + txa + and #7 + //SEG148 [80] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ) -- vbuaa_neq_vbuc1_then_la1 + cmp #7 + bne b4 + //SEG149 bitmap_init::@7 + //SEG150 [81] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 + clc + lda yoffs + adc #<$28*8 + sta yoffs + lda yoffs+1 + adc #>$28*8 + sta yoffs+1 + //SEG151 [82] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG152 [82] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG153 bitmap_init::@4 + b4: + //SEG154 [83] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG155 [84] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ) -- vbuxx_neq_0_then_la1 + cpx #0 + bne b3 + //SEG156 bitmap_init::@return + //SEG157 [85] return [ ] ( main:2::bitmap_init:13 [ ] ) + rts + //SEG158 [86] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG159 bitmap_init::@10 + //SEG160 [69] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG161 [69] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy } x_start: .word $a, $14, $1e, $1e y_start: .byte $a, $a, $a, $14 x_cur: .fill 8, 0 y_cur: .fill 8, 0 + delay: .fill 4, 0 + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.sym b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.sym index ad0da12a5..ed1168439 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.sym @@ -1,21 +1,164 @@ -(label) @2 +(label) @9 (label) @begin (label) @end -(void()) init((byte) init::point_idx) -(word~) init::$0 $0 zp ZP_WORD:2 4.0 -(byte~) init::$1 reg byte a 4.0 -(word~) init::$2 $2 zp ZP_WORD:2 4.0 -(word~) init::$3 $3 zp ZP_WORD:2 4.0 -(label) init::@return -(byte) init::point_idx -(byte) init::point_idx#0 reg byte x 3.166666666666667 +(byte*) BITMAP +(const byte*) BITMAP#0 BITMAP = ((byte*))(word/dword/signed dword) 40960 +(byte*) BORDERCOL +(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte*) CIA2_PORT_A +(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 +(byte*) CIA2_PORT_A_DDR +(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) D011 +(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265 +(byte*) D018 +(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272 +(byte) DELAY +(const byte) DELAY#0 DELAY = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte*) PROCPORT +(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) PROCPORT_DDR +(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) PROCPORT_DDR_MEMORY_MASK +(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_RAM_IO +(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/dword/signed dword) 34816 +(byte) VIC_BMM +(const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32 +(byte) VIC_DEN +(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte) VIC_RSEL +(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(void()) bitmap_clear() +(word~) bitmap_clear::$3 $3 zp ZP_WORD:3 2.0 +(label) bitmap_clear::@1 +(label) bitmap_clear::@2 +(label) bitmap_clear::@3 +(label) bitmap_clear::@return +(byte*) bitmap_clear::bitmap +(byte*) bitmap_clear::bitmap#1 bitmap zp ZP_WORD:3 42.599999999999994 +(byte*) bitmap_clear::bitmap#2 bitmap zp ZP_WORD:3 157.0 +(byte*) bitmap_clear::bitmap#3 bitmap zp ZP_WORD:3 24.0 +(byte*~) bitmap_clear::bitmap#5 bitmap zp ZP_WORD:3 4.0 +(byte) bitmap_clear::x +(byte) bitmap_clear::x#1 reg byte x 151.5 +(byte) bitmap_clear::x#2 reg byte x 67.33333333333333 +(byte) bitmap_clear::y +(byte) bitmap_clear::y#1 y zp ZP_BYTE:2 16.5 +(byte) bitmap_clear::y#4 y zp ZP_BYTE:2 3.6666666666666665 +(void()) bitmap_init((byte*) bitmap_init::bitmap) +(byte~) bitmap_init::$3 $3 zp ZP_BYTE:2 11.0 +(byte~) bitmap_init::$4 reg byte a 22.0 +(byte~) bitmap_init::$5 reg byte a 22.0 +(byte~) bitmap_init::$6 reg byte a 22.0 +(byte~) bitmap_init::$7 reg byte a 22.0 +(label) bitmap_init::@1 +(label) bitmap_init::@10 +(label) bitmap_init::@2 +(label) bitmap_init::@3 +(label) bitmap_init::@4 +(label) bitmap_init::@7 +(label) bitmap_init::@return +(byte*) bitmap_init::bitmap +(byte) bitmap_init::bits +(byte) bitmap_init::bits#1 reg byte a 11.0 +(byte) bitmap_init::bits#3 reg byte a 16.5 +(byte) bitmap_init::bits#4 reg byte a 7.333333333333333 +(byte) bitmap_init::x +(byte) bitmap_init::x#1 reg byte x 16.5 +(byte) bitmap_init::x#2 reg byte x 5.5 +(byte) bitmap_init::y +(byte) bitmap_init::y#1 reg byte x 16.5 +(byte) bitmap_init::y#2 reg byte x 6.0 +(byte*) bitmap_init::yoffs +(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:3 22.0 +(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:3 6.111111111111112 +(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:3 11.0 +(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) +(word~) bitmap_plot::$1 $1 zp ZP_WORD:7 4.0 +(byte~) bitmap_plot::$2 reg byte a 4.0 +(word~) bitmap_plot::$3 $3 zp ZP_WORD:5 1.0 +(label) bitmap_plot::@return +(byte*) bitmap_plot::plotter +(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:5 3.0 +(word) bitmap_plot::x +(word) bitmap_plot::x#0 x zp ZP_WORD:3 3.0 +(byte) bitmap_plot::y +(byte) bitmap_plot::y#0 reg byte a 15.0 +(byte[256]) bitmap_plot_bit +(const byte[256]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( 256, 0) } +(byte[256]) bitmap_plot_yhi +(const byte[256]) bitmap_plot_yhi#0 bitmap_plot_yhi = { fill( 256, 0) } +(byte[256]) bitmap_plot_ylo +(const byte[256]) bitmap_plot_ylo#0 bitmap_plot_ylo = { fill( 256, 0) } +(byte[4]) delay +(const byte[4]) delay#0 delay = { fill( 4, 0) } (void()) main() +(byte~) main::$9 reg byte y 11.0 (label) main::@1 +(label) main::@10 +(label) main::@11 +(label) main::@12 +(label) main::@14 +(label) main::@15 (label) main::@3 -(label) main::@return (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#2 reg byte x 7.857142857142857 +(label) main::toD0181 +(word~) main::toD0181_$0 +(word~) main::toD0181_$1 +(word~) main::toD0181_$2 +(byte~) main::toD0181_$3 +(word~) main::toD0181_$4 +(byte~) main::toD0181_$5 +(byte~) main::toD0181_$6 +(byte~) main::toD0181_$7 +(byte~) main::toD0181_$8 +(byte*) main::toD0181_gfx +(byte) main::toD0181_return +(const byte) main::toD0181_return#0 toD0181_return = >((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 +(byte*) main::toD0181_screen +(label) main::vicSelectGfxBank1 +(byte~) main::vicSelectGfxBank1_$0 +(label) main::vicSelectGfxBank1_@1 +(byte*) main::vicSelectGfxBank1_gfx +(label) main::vicSelectGfxBank1_toDd001 +(word~) main::vicSelectGfxBank1_toDd001_$0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(byte~) main::vicSelectGfxBank1_toDd001_$2 +(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3 +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte) main::vicSelectGfxBank1_toDd001_return +(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(void()) point_init((byte) point_init::point_idx) +(word~) point_init::$0 $0 zp ZP_WORD:3 4.0 +(byte~) point_init::$1 reg byte a 4.0 +(word~) point_init::$2 $2 zp ZP_WORD:3 4.0 +(word~) point_init::$3 $3 zp ZP_WORD:3 4.0 +(byte~) point_init::$4 reg byte a 4.0 +(label) point_init::@return +(byte) point_init::point_idx +(byte) point_init::point_idx#0 reg byte x 2.9999999999999996 +(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch) +(label) screen_fill::@1 +(label) screen_fill::@2 +(label) screen_fill::@3 +(label) screen_fill::@return +(byte) screen_fill::ch +(const byte) screen_fill::ch#0 ch = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte*) screen_fill::screen +(byte*) screen_fill::screen#1 screen zp ZP_WORD:3 42.599999999999994 +(byte*) screen_fill::screen#2 screen zp ZP_WORD:3 157.0 +(byte*) screen_fill::screen#3 screen zp ZP_WORD:3 22.0 +(byte) screen_fill::x +(byte) screen_fill::x#1 reg byte x 151.5 +(byte) screen_fill::x#2 reg byte x 67.33333333333333 +(byte) screen_fill::y +(byte) screen_fill::y#1 y zp ZP_BYTE:2 16.5 +(byte) screen_fill::y#4 y zp ZP_BYTE:2 3.6666666666666665 (word[4]) x_cur (const word[4]) x_cur#0 x_cur = { fill( 4, 0) } (word[4]) x_start @@ -26,6 +169,22 @@ (const byte[4]) y_start#0 y_start = { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 } reg byte x [ main::i#2 main::i#1 ] -reg byte x [ init::point_idx#0 ] -zp ZP_WORD:2 [ init::$0 init::$2 init::$3 ] -reg byte a [ init::$1 ] +zp ZP_BYTE:2 [ screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_init::$3 ] +zp ZP_WORD:3 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$0 point_init::$2 point_init::$3 ] +reg byte x [ screen_fill::x#2 screen_fill::x#1 ] +reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] +reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] +reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] +reg byte x [ point_init::point_idx#0 ] +reg byte y [ main::$9 ] +reg byte a [ bitmap_plot::y#0 ] +zp ZP_WORD:5 [ bitmap_plot::$3 bitmap_plot::plotter#1 ] +zp ZP_WORD:7 [ bitmap_plot::$1 ] +reg byte a [ bitmap_plot::$2 ] +reg byte a [ point_init::$1 ] +reg byte a [ point_init::$4 ] +reg byte a [ bitmap_init::$4 ] +reg byte a [ bitmap_init::$5 ] +reg byte a [ bitmap_init::$6 ] +reg byte a [ bitmap_init::$7 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/raster-bars.cfg b/src/test/java/dk/camelot64/kickc/test/ref/raster-bars.cfg index 7a2f45500..741c4b445 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/raster-bars.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/raster-bars.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@2 -@2: scope:[] from @begin + to:@5 +@5: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @2 +@end: scope:[] from @5 [3] phi() [ ] ( ) -main: scope:[main] from @2 +main: scope:[main] from @5 asm { sei } to:main::@2 main::@2: scope:[main] from main main::@2 main::@5 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/raster-bars.log b/src/test/java/dk/camelot64/kickc/test/ref/raster-bars.log index 79fee5354..ba2f7205e 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/raster-bars.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/raster-bars.log @@ -166,10 +166,31 @@ const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + Adding pre/post-modifier (byte) raster::i ← ++ (byte) raster::i SYMBOLS (label) @1 (label) @2 +(label) @3 +(label) @4 +(label) @5 (label) @begin (label) @end (byte*) BGCOL @@ -256,6 +277,34 @@ SYMBOLS (byte) raster::col (byte) raster::i (byte[]) rastercols +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 @@ -361,6 +410,51 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 + to:@4 main: scope:[main] from asm { sei } to:main::@1 @@ -385,9 +479,9 @@ main::@6: scope:[main] from main::@5 main::@return: scope:[main] from main::@6 return to:@return -@1: scope:[] from @begin +@4: scope:[] from @3 (byte[]) rastercols ← { (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/word/signed word/dword/signed dword) 255 } - to:@2 + to:@5 raster: scope:[raster] from asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } (byte) raster::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -407,11 +501,15 @@ raster::@2: scope:[raster] from raster::@1 raster::@return: scope:[raster] from raster::@2 return to:@return -@2: scope:[] from @1 +@5: scope:[] from @4 call main to:@end -@end: scope:[] from @2 +@end: scope:[] from @5 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Eliminating unused variable (byte*) PROCPORT_DDR and assignment [0] (byte*) PROCPORT_DDR ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 Eliminating unused variable (byte) PROCPORT_DDR_MEMORY_MASK and assignment [1] (byte) PROCPORT_DDR_MEMORY_MASK ← (byte/signed byte/word/signed word/dword/signed dword) 7 Eliminating unused variable (byte*) PROCPORT and assignment [2] (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -475,6 +573,9 @@ Eliminating unused variable (byte) LIGHT_GREEN and assignment [62] (byte) LIGHT_ Eliminating unused variable (byte) LIGHT_BLUE and assignment [63] (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 Eliminating unused variable (byte) LIGHT_GREY and assignment [64] (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 Eliminating unused variable - keeping the call (void~) main::$2 +Removing empty block @1 +Removing empty block @2 +Removing empty block @3 Removing empty block main::@4 Removing empty block main::@6 Removing empty block raster::@2 @@ -487,8 +588,8 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 - to:@1 -main: scope:[main] from @2 + to:@4 +main: scope:[main] from @5 asm { sei } to:main::@2 main::@1: scope:[main] from main::@7 @@ -510,9 +611,9 @@ main::@7: scope:[main] from main::@5 main::@return: scope:[main] from main::@7 return to:@return -@1: scope:[] from @begin +@4: scope:[] from @begin (byte[]) rastercols#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/word/signed word/dword/signed dword) 255 } - to:@2 + to:@5 raster: scope:[raster] from main::@5 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } (byte) raster::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -532,17 +633,17 @@ raster::@1: scope:[raster] from raster raster::@1 raster::@return: scope:[raster] from raster::@1 return to:@return -@2: scope:[] from @1 +@5: scope:[] from @4 call main - to:@3 -@3: scope:[] from @2 + to:@6 +@6: scope:[] from @5 to:@end -@end: scope:[] from @3 +@end: scope:[] from @6 SYMBOL TABLE SSA -(label) @1 -(label) @2 -(label) @3 +(label) @4 +(label) @5 +(label) @6 (label) @begin (label) @end (byte*) BGCOL @@ -577,7 +678,7 @@ SYMBOL TABLE SSA OPTIMIZING CONTROL FLOW GRAPH Culled Empty Block (label) main::@1 -Culled Empty Block (label) @3 +Culled Empty Block (label) @6 Succesful SSA optimization Pass2CullEmptyBlocks Simple Condition (bool~) main::$0 if(*((byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 Simple Condition (bool~) main::$1 if(*((byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 @@ -596,18 +697,18 @@ Succesful SSA optimization Pass2ConstantIfs Removing unused block main::@return Succesful SSA optimization Pass2EliminateUnusedBlocks Culled Empty Block (label) main::@7 -Culled Empty Block (label) @1 +Culled Empty Block (label) @4 Succesful SSA optimization Pass2CullEmptyBlocks OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const byte) raster::i#0 Inlining constant with var siblings (const byte) raster::i#0 Constant inlined raster::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @2 @end main main::@2 main::@3 main::@5 raster raster::@1 raster::@return +Block Sequence Planned @begin @5 @end main main::@2 main::@3 main::@5 raster raster::@1 raster::@return Added new block during phi lifting raster::@3(between raster::@1 and raster::@1) -Block Sequence Planned @begin @2 @end main main::@2 main::@3 main::@5 raster raster::@1 raster::@return raster::@3 +Block Sequence Planned @begin @5 @end main main::@2 main::@3 main::@5 raster raster::@1 raster::@return raster::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @2 +Adding NOP phi() at start of @5 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@5 CALL GRAPH @@ -625,9 +726,9 @@ Coalesced [20] raster::col#4 ← raster::col#1 Coalesced [21] raster::i#3 ← raster::i#1 Coalesced down to 2 phi equivalence classes Culled Empty Block (label) raster::@3 -Block Sequence Planned @begin @2 @end main main::@2 main::@3 main::@5 raster raster::@1 raster::@return +Block Sequence Planned @begin @5 @end main main::@2 main::@3 main::@5 raster raster::@1 raster::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @2 +Adding NOP phi() at start of @5 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@5 Propagating live ranges... @@ -638,14 +739,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@2 -@2: scope:[] from @begin + to:@5 +@5: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @2 +@end: scope:[] from @5 [3] phi() [ ] ( ) -main: scope:[main] from @2 +main: scope:[main] from @5 asm { sei } to:main::@2 main::@2: scope:[main] from main main::@2 main::@5 @@ -678,15 +779,15 @@ raster::@return: scope:[raster] from raster::@1 DOMINATORS @begin dominated by @begin -@2 dominated by @2 @begin -@end dominated by @2 @begin @end -main dominated by @2 @begin main -main::@2 dominated by @2 @begin main::@2 main -main::@3 dominated by @2 @begin main::@2 main main::@3 -main::@5 dominated by @2 @begin main::@2 main main::@5 main::@3 -raster dominated by @2 @begin raster main::@2 main main::@5 main::@3 -raster::@1 dominated by @2 @begin raster main::@2 raster::@1 main main::@5 main::@3 -raster::@return dominated by @2 @begin raster main::@2 raster::@1 raster::@return main main::@5 main::@3 +@5 dominated by @begin @5 +@end dominated by @begin @5 @end +main dominated by @begin @5 main +main::@2 dominated by @begin @5 main::@2 main +main::@3 dominated by @begin @5 main::@2 main main::@3 +main::@5 dominated by @begin @5 main::@2 main main::@5 main::@3 +raster dominated by @begin @5 raster main::@2 main main::@5 main::@3 +raster::@1 dominated by @begin @5 raster main::@2 raster::@1 main main::@5 main::@3 +raster::@return dominated by @begin @5 raster main::@2 raster::@1 raster::@return main main::@5 main::@3 NATURAL LOOPS Found back edge: Loop head: main::@2 tails: main::@2 blocks: null @@ -751,15 +852,15 @@ INITIAL ASM .label BGCOL = $d021 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -b2_from_bbegin: - jmp b2 -//SEG4 @2 -b2: +//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +b5_from_bbegin: + jmp b5 +//SEG4 @5 +b5: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -bend_from_b2: +//SEG6 [3] phi from @5 to @end [phi:@5->@end] +bend_from_b5: jmp bend //SEG7 @end bend: @@ -904,15 +1005,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label BGCOL = $d021 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -b2_from_bbegin: - jmp b2 -//SEG4 @2 -b2: +//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +b5_from_bbegin: + jmp b5 +//SEG4 @5 +b5: //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -bend_from_b2: +//SEG6 [3] phi from @5 to @end [phi:@5->@end] +bend_from_b5: jmp bend //SEG7 @end bend: @@ -1023,7 +1124,7 @@ raster: { rastercols: .byte $b, 0, $b, $b, $c, $b, $c, $c, $f, $c, $f, $f, 1, $f, 1, 1, $f, 1, $f, $f, $c, $f, $c, $c, $b, $c, $b, $b, 0, $b, 0, $ff ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b2 +Removing instruction jmp b5 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b3 @@ -1033,12 +1134,12 @@ Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b2_from_bbegin: -Removing instruction bend_from_b2: +Removing instruction b5_from_bbegin: +Removing instruction bend_from_b5: Removing instruction b5_from_b3: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b2: +Removing instruction b5: Removing instruction bend: Removing instruction b5: Removing instruction b1_from_raster: @@ -1048,7 +1149,7 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @2 +(label) @5 (label) @begin (label) @end (byte*) BGCOL @@ -1090,11 +1191,11 @@ Score: 8346 .label BORDERCOL = $d020 .label BGCOL = $d021 //SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 +//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 @5 //SEG5 [2] call main [ ] ( ) jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG6 [3] phi from @5 to @end [phi:@5->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/raster-bars.sym b/src/test/java/dk/camelot64/kickc/test/ref/raster-bars.sym index 62ffa0fac..4e9483073 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/raster-bars.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/raster-bars.sym @@ -1,4 +1,4 @@ -(label) @2 +(label) @5 (label) @begin (label) @end (byte*) BGCOL diff --git a/src/test/java/dk/camelot64/kickc/test/ref/signed-words.cfg b/src/test/java/dk/camelot64/kickc/test/ref/signed-words.cfg index bfd8b094b..34bd658bb 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/signed-words.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/signed-words.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@3 -@3: scope:[] from @begin + to:@6 +@6: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @3 +@end: scope:[] from @6 [3] phi() [ ] ( ) -main: scope:[main] from @3 +main: scope:[main] from @6 [4] phi() [ ] ( main:2 [ ] ) [5] call init [ ] ( main:2 [ ] ) to:main::@2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/signed-words.log b/src/test/java/dk/camelot64/kickc/test/ref/signed-words.log index 6e8be6584..ea8e306a8 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/signed-words.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/signed-words.log @@ -168,6 +168,24 @@ const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + Adding pre/post-modifier (byte*) init::sc ← ++ (byte*) init::sc SYMBOLS (byte*~) $0 @@ -175,6 +193,9 @@ SYMBOLS (label) @1 (label) @2 (label) @3 +(label) @4 +(label) @5 +(label) @6 (label) @begin (label) @end (byte*) BGCOL @@ -293,6 +314,34 @@ SYMBOLS (label) main::@3 (label) main::@4 (label) main::@return +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx (signed word) xpos (signed word) xvel (signed word) ypos @@ -404,11 +453,56 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*~) $0 ← (byte*) SCREEN + (word/signed word/dword/signed dword) 1016 (byte*) SPRITES_PTR ← (byte*~) $0 (byte*) SPRITE ← ((byte*)) (word/signed word/dword/signed dword) 8192 - to:@1 + to:@4 main: scope:[main] from (void~) main::$0 ← call init to:main::@1 @@ -427,8 +521,8 @@ main::@4: scope:[main] from main::@3 main::@return: scope:[main] from main::@4 return to:@return -@1: scope:[] from @begin - to:@2 +@4: scope:[] from @3 + to:@5 init: scope:[init] from *((byte*) SPRITES_ENABLE) ← (byte/signed byte/word/signed word/dword/signed dword) 1 *((byte*) SPRITES_EXPAND_X) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -462,7 +556,7 @@ init::@4: scope:[init] from init::@2 init::@return: scope:[init] from init::@4 return to:@return -@2: scope:[] from @1 +@5: scope:[] from @4 (signed word) xpos ← (byte/signed byte/word/signed word/dword/signed dword) 0 (signed word) ypos ← (byte/signed byte/word/signed word/dword/signed dword) 0 (signed word) yvel_init ← (byte/signed byte/word/signed word/dword/signed dword) 100 @@ -470,7 +564,7 @@ init::@return: scope:[init] from init::@4 (signed word) yvel ← (signed word) yvel_init (signed byte/signed word/signed dword~) $1 ← - (byte/signed byte/word/signed word/dword/signed dword) 5 (signed word) g ← (signed byte/signed word/signed dword~) $1 - to:@3 + to:@6 anim: scope:[anim] from (bool~) anim::$0 ← (signed word) ypos < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) anim::$1 ← ! (bool~) anim::$0 @@ -517,11 +611,15 @@ anim::@4: scope:[anim] from anim::@3 anim::@return: scope:[anim] from anim::@1 return to:@return -@3: scope:[] from @2 +@6: scope:[] from @5 call main to:@end -@end: scope:[] from @3 +@end: scope:[] from @6 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Eliminating unused variable (byte*) PROCPORT_DDR and assignment [0] (byte*) PROCPORT_DDR ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 Eliminating unused variable (byte) PROCPORT_DDR_MEMORY_MASK and assignment [1] (byte) PROCPORT_DDR_MEMORY_MASK ← (byte/signed byte/word/signed word/dword/signed dword) 7 Eliminating unused variable (byte*) PROCPORT and assignment [2] (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -580,8 +678,10 @@ Eliminating unused variable (byte) LIGHT_BLUE and assignment [63] (byte) LIGHT_B Eliminating unused variable (byte) LIGHT_GREY and assignment [64] (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 Eliminating unused variable - keeping the call (void~) main::$0 Eliminating unused variable - keeping the call (void~) main::$2 -Removing empty block main::@4 Removing empty block @1 +Removing empty block @2 +Removing empty block main::@4 +Removing empty block @4 Removing empty block init::@4 PROCEDURE MODIFY VARIABLE ANALYSIS main modifies yvel @@ -612,17 +712,19 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:@3 +@3: scope:[] from @begin (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*~) $0 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) 1016 (byte*) SPRITES_PTR#0 ← (byte*~) $0 (byte*) SPRITE#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 - to:@2 -main: scope:[main] from @3 - (signed word) yvel_init#20 ← phi( @3/(signed word) yvel_init#16 ) - (signed word) xvel#20 ← phi( @3/(signed word) xvel#15 ) - (signed word) ypos#20 ← phi( @3/(signed word) ypos#15 ) - (signed word) xpos#20 ← phi( @3/(signed word) xpos#15 ) - (signed word) yvel#18 ← phi( @3/(signed word) yvel#14 ) + to:@5 +main: scope:[main] from @6 + (signed word) yvel_init#20 ← phi( @6/(signed word) yvel_init#16 ) + (signed word) xvel#20 ← phi( @6/(signed word) xvel#15 ) + (signed word) ypos#20 ← phi( @6/(signed word) ypos#15 ) + (signed word) xpos#20 ← phi( @6/(signed word) xpos#15 ) + (signed word) yvel#18 ← phi( @6/(signed word) yvel#14 ) call init to:main::@5 main::@5: scope:[main] from main @@ -715,7 +817,7 @@ init::@2: scope:[init] from init::@2 init::@3 init::@return: scope:[init] from init::@2 return to:@return -@2: scope:[] from @begin +@5: scope:[] from @3 (signed word) xpos#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (signed word) ypos#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (signed word) yvel_init#2 ← (byte/signed byte/word/signed word/dword/signed dword) 100 @@ -723,7 +825,7 @@ init::@return: scope:[init] from init::@2 (signed word) yvel#2 ← (signed word) yvel_init#2 (signed byte/signed word/signed dword~) $1 ← - (byte/signed byte/word/signed word/dword/signed dword) 5 (signed word) g#0 ← (signed byte/signed word/signed dword~) $1 - to:@3 + to:@6 anim: scope:[anim] from main::@3 (signed word) yvel_init#14 ← phi( main::@3/(signed word) yvel_init#13 ) (signed word) xvel#13 ← phi( main::@3/(signed word) xvel#12 ) @@ -799,34 +901,35 @@ anim::@return: scope:[anim] from anim::@1 (signed word) yvel_init#5 ← (signed word) yvel_init#11 return to:@return -@3: scope:[] from @2 - (signed word) yvel_init#16 ← phi( @2/(signed word) yvel_init#2 ) - (signed word) xvel#15 ← phi( @2/(signed word) xvel#2 ) - (signed word) ypos#15 ← phi( @2/(signed word) ypos#2 ) - (signed word) xpos#15 ← phi( @2/(signed word) xpos#2 ) - (signed word) yvel#14 ← phi( @2/(signed word) yvel#2 ) +@6: scope:[] from @5 + (signed word) yvel_init#16 ← phi( @5/(signed word) yvel_init#2 ) + (signed word) xvel#15 ← phi( @5/(signed word) xvel#2 ) + (signed word) ypos#15 ← phi( @5/(signed word) ypos#2 ) + (signed word) xpos#15 ← phi( @5/(signed word) xpos#2 ) + (signed word) yvel#14 ← phi( @5/(signed word) yvel#2 ) call main - to:@4 -@4: scope:[] from @3 - (signed word) yvel_init#12 ← phi( @3/(signed word) yvel_init#1 ) - (signed word) xvel#11 ← phi( @3/(signed word) xvel#1 ) - (signed word) ypos#12 ← phi( @3/(signed word) ypos#1 ) - (signed word) xpos#11 ← phi( @3/(signed word) xpos#1 ) - (signed word) yvel#11 ← phi( @3/(signed word) yvel#1 ) + to:@7 +@7: scope:[] from @6 + (signed word) yvel_init#12 ← phi( @6/(signed word) yvel_init#1 ) + (signed word) xvel#11 ← phi( @6/(signed word) xvel#1 ) + (signed word) ypos#12 ← phi( @6/(signed word) ypos#1 ) + (signed word) xpos#11 ← phi( @6/(signed word) xpos#1 ) + (signed word) yvel#11 ← phi( @6/(signed word) yvel#1 ) (signed word) yvel#6 ← (signed word) yvel#11 (signed word) xpos#6 ← (signed word) xpos#11 (signed word) ypos#6 ← (signed word) ypos#12 (signed word) xvel#5 ← (signed word) xvel#11 (signed word) yvel_init#6 ← (signed word) yvel_init#12 to:@end -@end: scope:[] from @4 +@end: scope:[] from @7 SYMBOL TABLE SSA (byte*~) $0 (signed byte/signed word/signed dword~) $1 -(label) @2 (label) @3 -(label) @4 +(label) @5 +(label) @6 +(label) @7 (label) @begin (label) @end (byte*) RASTER @@ -1202,13 +1305,14 @@ if() condition always true - replacing block destination if(true) goto main::@1 Succesful SSA optimization Pass2ConstantIfs Removing unused block main::@return Succesful SSA optimization Pass2EliminateUnusedBlocks +Culled Empty Block (label) @3 Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@1 Culled Empty Block (label) main::@6 Culled Empty Block (label) init::@3 -Culled Empty Block (label) @2 +Culled Empty Block (label) @5 Not culling empty block because it shares successor with its predecessor. (label) anim::@4 -Culled Empty Block (label) @4 +Culled Empty Block (label) @7 Succesful SSA optimization Pass2CullEmptyBlocks Not culling empty block because it shares successor with its predecessor. (label) anim::@4 Not aliassing across scopes: yvel#12 yvel#10 @@ -1273,14 +1377,14 @@ Constant inlined xpos#14 = (byte/signed byte/word/signed word/dword/signed dword Constant inlined yvel_init#4 = (byte/word/signed word/dword/signed dword) 200 Constant inlined init::sc#0 = (const byte*) SCREEN#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @3 @end main main::@2 main::@3 anim anim::@3 anim::@4 anim::@2 anim::@1 anim::@return init init::@1 init::@2 init::@return +Block Sequence Planned @begin @6 @end main main::@2 main::@3 anim anim::@3 anim::@4 anim::@2 anim::@1 anim::@return init init::@1 init::@2 init::@return Added new block during phi lifting anim::@5(between anim::@3 and anim::@2) Added new block during phi lifting anim::@6(between anim and anim::@1) Added new block during phi lifting init::@5(between init::@1 and init::@1) Added new block during phi lifting init::@6(between init::@2 and init::@2) -Block Sequence Planned @begin @3 @end main main::@2 main::@3 anim anim::@3 anim::@4 anim::@2 anim::@1 anim::@return anim::@5 anim::@6 init init::@1 init::@2 init::@return init::@6 init::@5 +Block Sequence Planned @begin @6 @end main main::@2 main::@3 anim anim::@3 anim::@4 anim::@2 anim::@1 anim::@return anim::@5 anim::@6 init init::@1 init::@2 init::@return init::@6 init::@5 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @3 +Adding NOP phi() at start of @6 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -1332,9 +1436,9 @@ Not culling empty block because it shares successor with its predecessor. (label Culled Empty Block (label) anim::@6 Culled Empty Block (label) init::@6 Culled Empty Block (label) init::@5 -Block Sequence Planned @begin @3 @end main main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@return anim::@5 init init::@1 init::@2 init::@return +Block Sequence Planned @begin @6 @end main main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@return anim::@5 init init::@1 init::@2 init::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @3 +Adding NOP phi() at start of @6 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -1358,14 +1462,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@3 -@3: scope:[] from @begin + to:@6 +@6: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @3 +@end: scope:[] from @6 [3] phi() [ ] ( ) -main: scope:[main] from @3 +main: scope:[main] from @6 [4] phi() [ ] ( main:2 [ ] ) [5] call init [ ] ( main:2 [ ] ) to:main::@2 @@ -1446,21 +1550,21 @@ init::@return: scope:[init] from init::@2 DOMINATORS @begin dominated by @begin -@3 dominated by @begin @3 -@end dominated by @begin @end @3 -main dominated by @begin main @3 -main::@2 dominated by @begin main @3 main::@2 -main::@3 dominated by @begin main @3 main::@2 main::@3 -anim dominated by @begin main @3 main::@2 anim main::@3 -anim::@3 dominated by @begin anim::@3 main @3 main::@2 anim main::@3 -anim::@2 dominated by @begin anim::@3 anim::@2 main @3 main::@2 anim main::@3 -anim::@1 dominated by @begin anim::@1 main @3 main::@2 anim main::@3 -anim::@return dominated by @begin anim::@1 main anim::@return @3 main::@2 anim main::@3 -anim::@5 dominated by anim::@5 @begin anim::@3 main @3 main::@2 anim main::@3 -init dominated by init @begin main @3 -init::@1 dominated by init @begin main init::@1 @3 -init::@2 dominated by init @begin main init::@2 init::@1 @3 -init::@return dominated by init @begin init::@return main init::@2 init::@1 @3 +@6 dominated by @begin @6 +@end dominated by @begin @end @6 +main dominated by @begin main @6 +main::@2 dominated by @begin main @6 main::@2 +main::@3 dominated by @begin main @6 main::@2 main::@3 +anim dominated by @begin main @6 main::@2 anim main::@3 +anim::@3 dominated by @begin anim::@3 main @6 main::@2 anim main::@3 +anim::@2 dominated by @begin anim::@3 anim::@2 main @6 main::@2 anim main::@3 +anim::@1 dominated by @begin anim::@1 main @6 main::@2 anim main::@3 +anim::@return dominated by @begin anim::@1 main anim::@return @6 main::@2 anim main::@3 +anim::@5 dominated by anim::@5 @begin anim::@3 main @6 main::@2 anim main::@3 +init dominated by init @begin main @6 +init::@1 dominated by init @begin main init::@1 @6 +init::@2 dominated by init @begin main init::@2 init::@1 @6 +init::@return dominated by init @begin init::@return main init::@2 init::@1 @6 NATURAL LOOPS Found back edge: Loop head: main::@2 tails: main::@2 blocks: null @@ -1621,17 +1725,17 @@ INITIAL ASM .label yvel_22 = 6 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -b3_from_bbegin: - jmp b3 -//SEG4 @3 -b3: +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +b6_from_bbegin: + jmp b6 +//SEG4 @6 +b6: //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @3 to main [phi:@3->main] -main_from_b3: +//SEG6 [4] phi from @6 to main [phi:@6->main] +main_from_b6: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -bend_from_b3: +//SEG7 [3] phi from @6 to @end [phi:@6->@end] +bend_from_b6: jmp bend //SEG8 @end bend: @@ -2081,17 +2185,17 @@ ASSEMBLER BEFORE OPTIMIZATION .label yvel_22 = 6 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -b3_from_bbegin: - jmp b3 -//SEG4 @3 -b3: +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +b6_from_bbegin: + jmp b6 +//SEG4 @6 +b6: //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @3 to main [phi:@3->main] -main_from_b3: +//SEG6 [4] phi from @6 to main [phi:@6->main] +main_from_b6: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -bend_from_b3: +//SEG7 [3] phi from @6 to @end [phi:@6->@end] +bend_from_b6: jmp bend //SEG8 @end bend: @@ -2414,7 +2518,7 @@ init: { } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b3 +Removing instruction jmp b6 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b3 @@ -2443,9 +2547,9 @@ Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b2_from_b2 with b2 Removing instruction bbegin: -Removing instruction b3_from_bbegin: -Removing instruction main_from_b3: -Removing instruction bend_from_b3: +Removing instruction b6_from_bbegin: +Removing instruction main_from_b6: +Removing instruction bend_from_b6: Removing instruction b2_from_b2: Removing instruction b3_from_b2: Removing instruction b1_from_anim: @@ -2454,7 +2558,7 @@ Removing instruction b2_from_b5: Removing instruction b1_from_b1: Removing instruction b2_from_b2: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b3: +Removing instruction b6: Removing instruction bend: Removing instruction b2_from_main: Removing instruction b3: @@ -2480,7 +2584,7 @@ Removing unreachable instruction jmp b2 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @3 +(label) @6 (label) @begin (label) @end (byte*) RASTER @@ -2604,12 +2708,12 @@ Score: 6623 .label yvel_12 = 6 .label yvel_22 = 6 //SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 @6 //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [4] phi from @6 to main [phi:@6->main] jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG7 [3] phi from @6 to @end [phi:@6->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/signed-words.sym b/src/test/java/dk/camelot64/kickc/test/ref/signed-words.sym index 0529b1e2a..d80a845ee 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/signed-words.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/signed-words.sym @@ -1,4 +1,4 @@ -(label) @3 +(label) @6 (label) @begin (label) @end (byte*) RASTER diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg index 122607dd8..6b1a3c12a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@51 -@51: scope:[] from @begin + to:@54 +@54: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @51 +@end: scope:[] from @54 [3] phi() [ ] ( ) -main: scope:[main] from @51 +main: scope:[main] from @54 [4] phi() [ ] ( main:2 [ ] ) [5] call init [ ] ( main:2 [ ] ) to:main::@2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log index 5606ae4e5..b87dd1138 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log @@ -310,6 +310,24 @@ const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + Importing basic-floats PARSING src/test/java/dk/camelot64/kickc/test/kc/basic-floats.kc // Library wrapping the BASIC floating point functions @@ -776,6 +794,9 @@ SYMBOLS (label) @5 (label) @50 (label) @51 +(label) @52 +(label) @53 +(label) @54 (label) @6 (label) @7 (label) @8 @@ -1244,6 +1265,34 @@ SYMBOLS (byte*) subFACfromMEM::mem (void()) tanFAC() (label) tanFAC::@return +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 @@ -1354,9 +1403,54 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 (byte*) memLo ← ((byte*)) (byte/word/signed word/dword/signed dword) 254 (byte*) memHi ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 - to:@1 + to:@4 prepareMEM: scope:[prepareMEM] from (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem *((byte*) memLo) ← (byte~) prepareMEM::$0 @@ -1366,8 +1460,8 @@ prepareMEM: scope:[prepareMEM] from prepareMEM::@return: scope:[prepareMEM] from prepareMEM return to:@return -@1: scope:[] from @begin - to:@2 +@4: scope:[] from @3 + to:@5 setFAC: scope:[setFAC] from (byte*~) setFAC::$0 ← ((byte*)) (word) setFAC::w (void~) setFAC::$1 ← call prepareMEM (byte*~) setFAC::$0 @@ -1376,8 +1470,8 @@ setFAC: scope:[setFAC] from setFAC::@return: scope:[setFAC] from setFAC return to:@return -@2: scope:[] from @1 - to:@3 +@5: scope:[] from @4 + to:@6 getFAC: scope:[getFAC] from asm { jsr$b1aa sty$fe sta$ff } (word) getFAC::w ← { *((byte*) memHi), *((byte*) memLo) } @@ -1389,24 +1483,24 @@ getFAC::@return: scope:[getFAC] from getFAC getFAC::@1 to:@return getFAC::@1: scope:[getFAC] from to:getFAC::@return -@3: scope:[] from @2 - to:@4 +@6: scope:[] from @5 + to:@7 setARGtoFAC: scope:[setARGtoFAC] from asm { jsr$bc0f } to:setARGtoFAC::@return setARGtoFAC::@return: scope:[setARGtoFAC] from setARGtoFAC return to:@return -@4: scope:[] from @3 - to:@5 +@7: scope:[] from @6 + to:@8 setFACtoARG: scope:[setFACtoARG] from asm { jsr$bbfc } to:setFACtoARG::@return setFACtoARG::@return: scope:[setFACtoARG] from setFACtoARG return to:@return -@5: scope:[] from @4 - to:@6 +@8: scope:[] from @7 + to:@9 setMEMtoFAC: scope:[setMEMtoFAC] from (void~) setMEMtoFAC::$0 ← call prepareMEM (byte*) setMEMtoFAC::mem asm { ldx$fe ldy$ff jsr$bbd4 } @@ -1414,8 +1508,8 @@ setMEMtoFAC: scope:[setMEMtoFAC] from setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC return to:@return -@6: scope:[] from @5 - to:@7 +@9: scope:[] from @8 + to:@10 setFACtoMEM: scope:[setFACtoMEM] from (void~) setFACtoMEM::$0 ← call prepareMEM (byte*) setFACtoMEM::mem asm { lda$fe ldy$ff jsr$bba2 } @@ -1423,24 +1517,24 @@ setFACtoMEM: scope:[setFACtoMEM] from setFACtoMEM::@return: scope:[setFACtoMEM] from setFACtoMEM return to:@return -@7: scope:[] from @6 - to:@8 +@10: scope:[] from @9 + to:@11 setFACtoPIhalf: scope:[setFACtoPIhalf] from asm { lda#$e0 ldy#$e2 jsr$bba2 } to:setFACtoPIhalf::@return setFACtoPIhalf::@return: scope:[setFACtoPIhalf] from setFACtoPIhalf return to:@return -@8: scope:[] from @7 - to:@9 +@11: scope:[] from @10 + to:@12 setFACto2PI: scope:[setFACto2PI] from asm { lda#$e5 ldy#$e2 jsr$bba2 } to:setFACto2PI::@return setFACto2PI::@return: scope:[setFACto2PI] from setFACto2PI return to:@return -@9: scope:[] from @8 - to:@10 +@12: scope:[] from @11 + to:@13 setARGtoMEM: scope:[setARGtoMEM] from (void~) setARGtoMEM::$0 ← call prepareMEM (byte*) setARGtoMEM::mem asm { lda$fe ldy$ff jsr$ba8c } @@ -1448,8 +1542,8 @@ setARGtoMEM: scope:[setARGtoMEM] from setARGtoMEM::@return: scope:[setARGtoMEM] from setARGtoMEM return to:@return -@10: scope:[] from @9 - to:@11 +@13: scope:[] from @12 + to:@14 addMEMtoFAC: scope:[addMEMtoFAC] from (void~) addMEMtoFAC::$0 ← call prepareMEM (byte*) addMEMtoFAC::mem asm { lda$fe ldy$ff jsr$b867 } @@ -1457,16 +1551,16 @@ addMEMtoFAC: scope:[addMEMtoFAC] from addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC return to:@return -@11: scope:[] from @10 - to:@12 +@14: scope:[] from @13 + to:@15 addARGtoFAC: scope:[addARGtoFAC] from asm { jsr$b86a } to:addARGtoFAC::@return addARGtoFAC::@return: scope:[addARGtoFAC] from addARGtoFAC return to:@return -@12: scope:[] from @11 - to:@13 +@15: scope:[] from @14 + to:@16 subFACfromMEM: scope:[subFACfromMEM] from (void~) subFACfromMEM::$0 ← call prepareMEM (byte*) subFACfromMEM::mem asm { lda$fe ldy$ff jsr$b850 } @@ -1474,16 +1568,16 @@ subFACfromMEM: scope:[subFACfromMEM] from subFACfromMEM::@return: scope:[subFACfromMEM] from subFACfromMEM return to:@return -@13: scope:[] from @12 - to:@14 +@16: scope:[] from @15 + to:@17 subFACfromARG: scope:[subFACfromARG] from asm { jsr$b853 } to:subFACfromARG::@return subFACfromARG::@return: scope:[subFACfromARG] from subFACfromARG return to:@return -@14: scope:[] from @13 - to:@15 +@17: scope:[] from @16 + to:@18 divMEMbyFAC: scope:[divMEMbyFAC] from (void~) divMEMbyFAC::$0 ← call prepareMEM (byte*) divMEMbyFAC::mem asm { lda$fe ldy$ff jsr$bb0f } @@ -1491,8 +1585,8 @@ divMEMbyFAC: scope:[divMEMbyFAC] from divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC return to:@return -@15: scope:[] from @14 - to:@16 +@18: scope:[] from @17 + to:@19 mulFACbyMEM: scope:[mulFACbyMEM] from (void~) mulFACbyMEM::$0 ← call prepareMEM (byte*) mulFACbyMEM::mem asm { lda$fe ldy$ff jsr$ba28 } @@ -1500,8 +1594,8 @@ mulFACbyMEM: scope:[mulFACbyMEM] from mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM return to:@return -@16: scope:[] from @15 - to:@17 +@19: scope:[] from @18 + to:@20 pwrMEMbyFAC: scope:[pwrMEMbyFAC] from (void~) pwrMEMbyFAC::$0 ← call prepareMEM (byte*) pwrMEMbyFAC::mem asm { lda$fe ldy$ff jsr$bf78 } @@ -1509,91 +1603,91 @@ pwrMEMbyFAC: scope:[pwrMEMbyFAC] from pwrMEMbyFAC::@return: scope:[pwrMEMbyFAC] from pwrMEMbyFAC return to:@return -@17: scope:[] from @16 - to:@18 +@20: scope:[] from @19 + to:@21 intFAC: scope:[intFAC] from asm { jsr$bccc } to:intFAC::@return intFAC::@return: scope:[intFAC] from intFAC return to:@return -@18: scope:[] from @17 - to:@19 +@21: scope:[] from @20 + to:@22 sinFAC: scope:[sinFAC] from asm { jsr$e26b } to:sinFAC::@return sinFAC::@return: scope:[sinFAC] from sinFAC return to:@return -@19: scope:[] from @18 - to:@20 +@22: scope:[] from @21 + to:@23 cosFAC: scope:[cosFAC] from asm { jsr$e264 } to:cosFAC::@return cosFAC::@return: scope:[cosFAC] from cosFAC return to:@return -@20: scope:[] from @19 - to:@21 +@23: scope:[] from @22 + to:@24 tanFAC: scope:[tanFAC] from asm { jsr$e2b4 } to:tanFAC::@return tanFAC::@return: scope:[tanFAC] from tanFAC return to:@return -@21: scope:[] from @20 - to:@22 +@24: scope:[] from @23 + to:@25 atnFAC: scope:[atnFAC] from asm { jsr$e303 } to:atnFAC::@return atnFAC::@return: scope:[atnFAC] from atnFAC return to:@return -@22: scope:[] from @21 - to:@23 +@25: scope:[] from @24 + to:@26 sqrFAC: scope:[sqrFAC] from asm { jsr$bf71 } to:sqrFAC::@return sqrFAC::@return: scope:[sqrFAC] from sqrFAC return to:@return -@23: scope:[] from @22 - to:@24 +@26: scope:[] from @25 + to:@27 expFAC: scope:[expFAC] from asm { jsr$bfed } to:expFAC::@return expFAC::@return: scope:[expFAC] from expFAC return to:@return -@24: scope:[] from @23 - to:@25 +@27: scope:[] from @26 + to:@28 logFAC: scope:[logFAC] from asm { jsr$b9ea } to:logFAC::@return logFAC::@return: scope:[logFAC] from logFAC return to:@return -@25: scope:[] from @24 - to:@26 +@28: scope:[] from @27 + to:@29 divFACby10: scope:[divFACby10] from asm { jsr$bafe } to:divFACby10::@return divFACby10::@return: scope:[divFACby10] from divFACby10 return to:@return -@26: scope:[] from @25 - to:@27 +@29: scope:[] from @28 + to:@30 mulFACby10: scope:[mulFACby10] from asm { jsr$bae2 } to:mulFACby10::@return mulFACby10::@return: scope:[mulFACby10] from mulFACby10 return to:@return -@27: scope:[] from @26 +@30: scope:[] from @29 (byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_line_cursor ← (byte*) print_screen (byte*) print_char_cursor ← (byte*) print_line_cursor - to:@28 + to:@31 print_str_lines: scope:[print_str_lines] from to:print_str_lines::@1 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9 @@ -1631,8 +1725,8 @@ print_str_lines::@10: scope:[print_str_lines] from print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@3 return to:@return -@28: scope:[] from @27 - to:@29 +@31: scope:[] from @30 + to:@32 print_str_ln: scope:[print_str_ln] from (void~) print_str_ln::$0 ← call print_str (byte*) print_str_ln::str (void~) print_str_ln::$1 ← call print_ln @@ -1640,8 +1734,8 @@ print_str_ln: scope:[print_str_ln] from print_str_ln::@return: scope:[print_str_ln] from print_str_ln return to:@return -@29: scope:[] from @28 - to:@30 +@32: scope:[] from @31 + to:@33 print_str: scope:[print_str] from to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 @@ -1664,8 +1758,8 @@ print_str::@6: scope:[print_str] from print_str::@return: scope:[print_str] from print_str::@3 return to:@return -@30: scope:[] from @29 - to:@31 +@33: scope:[] from @32 + to:@34 print_str_at: scope:[print_str_at] from to:print_str_at::@1 print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2 @@ -1688,8 +1782,8 @@ print_str_at::@6: scope:[print_str_at] from print_str_at::@return: scope:[print_str_at] from print_str_at::@3 return to:@return -@31: scope:[] from @30 - to:@32 +@34: scope:[] from @33 + to:@35 print_ln: scope:[print_ln] from to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 @@ -1704,8 +1798,8 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 print_ln::@return: scope:[print_ln] from print_ln::@2 return to:@return -@32: scope:[] from @31 - to:@33 +@35: scope:[] from @34 + to:@36 print_sword: scope:[print_sword] from (bool~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 @@ -1723,8 +1817,8 @@ print_sword::@2: scope:[print_sword] from print_sword print_sword::@return: scope:[print_sword] from print_sword::@1 return to:@return -@33: scope:[] from @32 - to:@34 +@36: scope:[] from @35 + to:@37 print_sbyte: scope:[print_sbyte] from (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sbyte::$1 ← ! (bool~) print_sbyte::$0 @@ -1742,8 +1836,8 @@ print_sbyte::@2: scope:[print_sbyte] from print_sbyte print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 return to:@return -@34: scope:[] from @33 - to:@35 +@37: scope:[] from @36 + to:@38 print_word: scope:[print_word] from (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -1753,8 +1847,8 @@ print_word: scope:[print_word] from print_word::@return: scope:[print_word] from print_word return to:@return -@35: scope:[] from @34 - to:@36 +@38: scope:[] from @37 + to:@39 print_dword: scope:[print_dword] from (word~) print_dword::$0 ← > (dword) print_dword::dw (void~) print_dword::$1 ← call print_word (word~) print_dword::$0 @@ -1764,8 +1858,8 @@ print_dword: scope:[print_dword] from print_dword::@return: scope:[print_dword] from print_dword return to:@return -@36: scope:[] from @35 - to:@37 +@39: scope:[] from @38 + to:@40 print_sdword: scope:[print_sdword] from (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0 @@ -1783,9 +1877,9 @@ print_sdword::@2: scope:[print_sdword] from print_sdword print_sdword::@return: scope:[print_sdword] from print_sdword::@1 return to:@return -@37: scope:[] from @36 +@40: scope:[] from @39 (byte[]) print_hextab ← (string) "0123456789abcdef" - to:@38 + to:@41 print_byte: scope:[print_byte] from (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_hextab + (byte~) print_byte::$0) @@ -1795,8 +1889,8 @@ print_byte: scope:[print_byte] from print_byte::@return: scope:[print_byte] from print_byte return to:@return -@38: scope:[] from @37 - to:@39 +@41: scope:[] from @40 + to:@42 print_char: scope:[print_char] from *((byte*) print_char_cursor) ← (byte) print_char::ch (byte*) print_char_cursor ← ++ (byte*) print_char_cursor @@ -1804,8 +1898,8 @@ print_char: scope:[print_char] from print_char::@return: scope:[print_char] from print_char return to:@return -@39: scope:[] from @38 - to:@40 +@42: scope:[] from @41 + to:@43 print_cls: scope:[print_cls] from (byte*) print_cls::sc ← (byte*) print_screen to:print_cls::@1 @@ -1823,8 +1917,8 @@ print_cls::@2: scope:[print_cls] from print_cls::@1 print_cls::@return: scope:[print_cls] from print_cls::@2 return to:@return -@40: scope:[] from @39 - to:@41 +@43: scope:[] from @42 + to:@44 print_set_screen: scope:[print_set_screen] from (byte*) print_screen ← (byte*) print_set_screen::screen (byte*) print_line_cursor ← (byte*) print_screen @@ -1833,14 +1927,14 @@ print_set_screen: scope:[print_set_screen] from print_set_screen::@return: scope:[print_set_screen] from print_set_screen return to:@return -@41: scope:[] from @40 +@44: scope:[] from @43 (byte) sinlen_x ← (byte/word/signed word/dword/signed dword) 221 (byte[221]) sintab_x ← { fill( 221, 0) } (byte) sinlen_y ← (byte/word/signed word/dword/signed dword) 197 (byte[197]) sintab_y ← { fill( 197, 0) } (byte*) sprites ← ((byte*)) (word/signed word/dword/signed dword) 8192 (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 - to:@42 + to:@45 main: scope:[main] from (void~) main::$0 ← call init to:main::@1 @@ -1859,8 +1953,8 @@ main::@4: scope:[main] from main::@3 main::@return: scope:[main] from main::@4 return to:@return -@42: scope:[] from @41 - to:@43 +@45: scope:[] from @44 + to:@46 init: scope:[init] from (void~) init::$0 ← call clear_screen (byte) init::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1886,8 +1980,8 @@ init::@2: scope:[init] from init::@1 init::@return: scope:[init] from init::@2 return to:@return -@43: scope:[] from @42 - to:@44 +@46: scope:[] from @45 + to:@47 clear_screen: scope:[clear_screen] from (byte*) clear_screen::sc ← (byte*) SCREEN to:clear_screen::@1 @@ -1903,10 +1997,10 @@ clear_screen::@2: scope:[clear_screen] from clear_screen::@1 clear_screen::@return: scope:[clear_screen] from clear_screen::@2 return to:@return -@44: scope:[] from @43 +@47: scope:[] from @46 (byte*) progress_cursor ← (byte*) SCREEN (byte) progress_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@45 + to:@48 progress_init: scope:[progress_init] from (byte*) progress_cursor ← (byte*) progress_init::line (byte) progress_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1914,8 +2008,8 @@ progress_init: scope:[progress_init] from progress_init::@return: scope:[progress_init] from progress_init return to:@return -@45: scope:[] from @44 - to:@46 +@48: scope:[] from @47 + to:@49 progress_inc: scope:[progress_inc] from (byte[]) progress_inc::progress_chars ← { (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 101, (byte/signed byte/word/signed word/dword/signed dword) 116, (byte/signed byte/word/signed word/dword/signed dword) 117, (byte/signed byte/word/signed word/dword/signed dword) 97, (byte/word/signed word/dword/signed dword) 246, (byte/word/signed word/dword/signed dword) 231, (byte/word/signed word/dword/signed dword) 234, (byte/word/signed word/dword/signed dword) 224 } (byte) progress_idx ← ++ (byte) progress_idx @@ -1934,10 +2028,10 @@ progress_inc::@2: scope:[progress_inc] from progress_inc progress_inc::@return: scope:[progress_inc] from progress_inc::@1 return to:@return -@46: scope:[] from @45 +@49: scope:[] from @48 (byte) sin_idx_x ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin_idx_y ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@47 + to:@50 anim: scope:[anim] from *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL) (byte) anim::xidx ← (byte) sin_idx_x @@ -2010,8 +2104,8 @@ anim::@10: scope:[anim] from anim::@4 anim::@return: scope:[anim] from anim::@5 return to:@return -@47: scope:[] from @46 - to:@48 +@50: scope:[] from @49 + to:@51 place_sprites: scope:[place_sprites] from *((byte*) SPRITES_ENABLE) ← (byte/signed byte/word/signed word/dword/signed dword) 127 *((byte*) SPRITES_EXPAND_X) ← (byte/signed byte/word/signed word/dword/signed dword) 127 @@ -2048,8 +2142,8 @@ place_sprites::@2: scope:[place_sprites] from place_sprites::@1 place_sprites::@return: scope:[place_sprites] from place_sprites::@2 return to:@return -@48: scope:[] from @47 - to:@49 +@51: scope:[] from @50 + to:@52 gen_sprites: scope:[gen_sprites] from (byte[]) gen_sprites::cml ← (string) "camelot" (byte*) gen_sprites::spr ← (byte*) sprites @@ -2068,8 +2162,8 @@ gen_sprites::@2: scope:[gen_sprites] from gen_sprites::@1 gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@2 return to:@return -@49: scope:[] from @48 - to:@50 +@52: scope:[] from @51 + to:@53 gen_chargen_sprite: scope:[gen_chargen_sprite] from (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 @@ -2141,8 +2235,8 @@ gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 gen_chargen_sprite::@return: scope:[gen_chargen_sprite] from gen_chargen_sprite::@10 return to:@return -@50: scope:[] from @49 - to:@51 +@53: scope:[] from @52 + to:@54 gen_sintab: scope:[gen_sintab] from (byte[]) gen_sintab::f_i ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } (byte[]) gen_sintab::f_min ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } @@ -2188,11 +2282,15 @@ gen_sintab::@2: scope:[gen_sintab] from gen_sintab::@1 gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@2 return to:@return -@51: scope:[] from @50 +@54: scope:[] from @53 call main to:@end -@end: scope:[] from @51 +@end: scope:[] from @54 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Removing unused procedure setFACtoARG Removing unused procedure setFACtoMEM Removing unused procedure setFACtoPIhalf @@ -2320,10 +2418,9 @@ Eliminating unused variable (byte*) print_screen and assignment [46] (byte*) pri Creating constant string variable for inline (const string) gen_sprites::$3 "camelot" Removing empty block @1 Removing empty block @2 -Removing empty block getFAC::@1 -Removing empty block @3 Removing empty block @4 Removing empty block @5 +Removing empty block getFAC::@1 Removing empty block @6 Removing empty block @7 Removing empty block @8 @@ -2359,17 +2456,20 @@ Removing empty block @37 Removing empty block @38 Removing empty block @39 Removing empty block @40 -Removing empty block main::@4 +Removing empty block @41 Removing empty block @42 Removing empty block @43 -Removing empty block clear_screen::@2 +Removing empty block main::@4 Removing empty block @45 -Removing empty block @47 -Removing empty block place_sprites::@2 +Removing empty block @46 +Removing empty block clear_screen::@2 Removing empty block @48 -Removing empty block gen_sprites::@2 -Removing empty block @49 Removing empty block @50 +Removing empty block place_sprites::@2 +Removing empty block @51 +Removing empty block gen_sprites::@2 +Removing empty block @52 +Removing empty block @53 Removing empty block gen_sintab::@2 PROCEDURE MODIFY VARIABLE ANALYSIS main modifies progress_cursor @@ -2425,9 +2525,11 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + to:@3 +@3: scope:[] from @begin (byte*) memLo#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 254 (byte*) memHi#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 - to:@41 + to:@44 prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*) prepareMEM::mem#2 divMEMbyFAC/(byte*) prepareMEM::mem#3 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 @@ -2522,19 +2624,19 @@ sinFAC: scope:[sinFAC] from gen_sintab::@18 sinFAC::@return: scope:[sinFAC] from sinFAC return to:@return -@41: scope:[] from @begin +@44: scope:[] from @3 (byte) sinlen_x#0 ← (byte/word/signed word/dword/signed dword) 221 (byte[221]) sintab_x#0 ← { fill( 221, 0) } (byte) sinlen_y#0 ← (byte/word/signed word/dword/signed dword) 197 (byte[197]) sintab_y#0 ← { fill( 197, 0) } (byte*) sprites#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 - to:@44 -main: scope:[main] from @51 - (byte) sin_idx_y#24 ← phi( @51/(byte) sin_idx_y#17 ) - (byte) sin_idx_x#26 ← phi( @51/(byte) sin_idx_x#16 ) - (byte) progress_idx#30 ← phi( @51/(byte) progress_idx#35 ) - (byte*) progress_cursor#29 ← phi( @51/(byte*) progress_cursor#35 ) + to:@47 +main: scope:[main] from @54 + (byte) sin_idx_y#24 ← phi( @54/(byte) sin_idx_y#17 ) + (byte) sin_idx_x#26 ← phi( @54/(byte) sin_idx_x#16 ) + (byte) progress_idx#30 ← phi( @54/(byte) progress_idx#35 ) + (byte*) progress_cursor#29 ← phi( @54/(byte*) progress_cursor#35 ) call init to:main::@5 main::@5: scope:[main] from main @@ -2686,10 +2788,10 @@ clear_screen::@1: scope:[clear_screen] from clear_screen clear_screen::@1 clear_screen::@return: scope:[clear_screen] from clear_screen::@1 return to:@return -@44: scope:[] from @41 +@47: scope:[] from @44 (byte*) progress_cursor#7 ← (byte*) SCREEN#0 (byte) progress_idx#7 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@46 + to:@49 progress_init: scope:[progress_init] from init::@5 init::@7 (byte*) progress_init::line#2 ← phi( init::@5/(byte*) progress_init::line#0 init::@7/(byte*) progress_init::line#1 ) (byte*) progress_cursor#8 ← (byte*) progress_init::line#2 @@ -2729,12 +2831,12 @@ progress_inc::@return: scope:[progress_inc] from progress_inc::@1 (byte*) progress_cursor#11 ← (byte*) progress_cursor#25 return to:@return -@46: scope:[] from @44 - (byte) progress_idx#39 ← phi( @44/(byte) progress_idx#7 ) - (byte*) progress_cursor#39 ← phi( @44/(byte*) progress_cursor#7 ) +@49: scope:[] from @47 + (byte) progress_idx#39 ← phi( @47/(byte) progress_idx#7 ) + (byte*) progress_cursor#39 ← phi( @47/(byte*) progress_cursor#7 ) (byte) sin_idx_x#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin_idx_y#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@51 + to:@54 anim: scope:[anim] from main::@3 (byte) sin_idx_y#9 ← phi( main::@3/(byte) sin_idx_y#13 ) (byte) sin_idx_x#9 ← phi( main::@3/(byte) sin_idx_x#13 ) @@ -3294,31 +3396,32 @@ gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23 (byte*) progress_cursor#13 ← (byte*) progress_cursor#27 return to:@return -@51: scope:[] from @46 - (byte) sin_idx_y#17 ← phi( @46/(byte) sin_idx_y#2 ) - (byte) sin_idx_x#16 ← phi( @46/(byte) sin_idx_x#2 ) - (byte) progress_idx#35 ← phi( @46/(byte) progress_idx#39 ) - (byte*) progress_cursor#35 ← phi( @46/(byte*) progress_cursor#39 ) +@54: scope:[] from @49 + (byte) sin_idx_y#17 ← phi( @49/(byte) sin_idx_y#2 ) + (byte) sin_idx_x#16 ← phi( @49/(byte) sin_idx_x#2 ) + (byte) progress_idx#35 ← phi( @49/(byte) progress_idx#39 ) + (byte*) progress_cursor#35 ← phi( @49/(byte*) progress_cursor#39 ) call main - to:@52 -@52: scope:[] from @51 - (byte) sin_idx_y#12 ← phi( @51/(byte) sin_idx_y#1 ) - (byte) sin_idx_x#12 ← phi( @51/(byte) sin_idx_x#1 ) - (byte) progress_idx#29 ← phi( @51/(byte) progress_idx#1 ) - (byte*) progress_cursor#28 ← phi( @51/(byte*) progress_cursor#1 ) + to:@55 +@55: scope:[] from @54 + (byte) sin_idx_y#12 ← phi( @54/(byte) sin_idx_y#1 ) + (byte) sin_idx_x#12 ← phi( @54/(byte) sin_idx_x#1 ) + (byte) progress_idx#29 ← phi( @54/(byte) progress_idx#1 ) + (byte*) progress_cursor#28 ← phi( @54/(byte*) progress_cursor#1 ) (byte*) progress_cursor#14 ← (byte*) progress_cursor#28 (byte) progress_idx#15 ← (byte) progress_idx#29 (byte) sin_idx_x#6 ← (byte) sin_idx_x#12 (byte) sin_idx_y#6 ← (byte) sin_idx_y#12 to:@end -@end: scope:[] from @52 +@end: scope:[] from @55 SYMBOL TABLE SSA -(label) @41 +(label) @3 (label) @44 -(label) @46 -(label) @51 -(label) @52 +(label) @47 +(label) @49 +(label) @54 +(label) @55 (label) @begin (label) @end (byte*) BORDERCOL @@ -4613,19 +4716,20 @@ Eliminating Noop Cast (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 Succesful SSA optimization Pass2NopCastElimination Removing unused block main::@return Succesful SSA optimization Pass2EliminateUnusedBlocks -Culled Empty Block (label) @41 +Culled Empty Block (label) @3 +Culled Empty Block (label) @44 Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@1 Culled Empty Block (label) main::@6 Culled Empty Block (label) init::@3 Culled Empty Block (label) init::@10 -Culled Empty Block (label) @44 -Culled Empty Block (label) @46 +Culled Empty Block (label) @47 +Culled Empty Block (label) @49 Not culling empty block because it shares successor with its predecessor. (label) anim::@9 Not culling empty block because it shares successor with its predecessor. (label) anim::@10 Not culling empty block because it shares successor with its predecessor. (label) gen_chargen_sprite::@6 Culled Empty Block (label) gen_sintab::@13 -Culled Empty Block (label) @52 +Culled Empty Block (label) @55 Succesful SSA optimization Pass2CullEmptyBlocks Not culling empty block because it shares successor with its predecessor. (label) anim::@9 Not culling empty block because it shares successor with its predecessor. (label) anim::@10 @@ -4886,7 +4990,7 @@ Inlining constant with var siblings (const byte[]) prepareMEM::mem#2 Inlining constant with var siblings (const byte[]) prepareMEM::mem#2 Constant inlined prepareMEM::mem#2 = (const byte[]) gen_sintab::f_min#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @51 @end main main::@2 main::@3 anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return +Block Sequence Planned @begin @54 @end main main::@2 main::@3 anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return Added new block during phi lifting anim::@11(between anim::@3 and anim::@1) Added new block during phi lifting anim::@12(between anim::@1 and anim::@2) Added new block during phi lifting anim::@13(between anim::@2 and anim::@3) @@ -4902,9 +5006,9 @@ Added new block during phi lifting gen_chargen_sprite::@12(between gen_chargen_s Added new block during phi lifting gen_chargen_sprite::@13(between gen_chargen_sprite::@5 and gen_chargen_sprite::@4) Added new block during phi lifting gen_chargen_sprite::@14(between gen_chargen_sprite::@4 and gen_chargen_sprite::@5) Added new block during phi lifting place_sprites::@3(between place_sprites::@1 and place_sprites::@1) -Block Sequence Planned @begin @51 @end main main::@2 main::@3 anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return anim::@15 anim::@14 anim::@11 anim::@13 anim::@12 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return init::@11 clear_screen clear_screen::@1 clear_screen::@return clear_screen::@3 gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return gen_sintab::@24 progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return progress_inc::@3 getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_sprites::@4 gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@11 gen_chargen_sprite::@12 gen_chargen_sprite::@13 gen_chargen_sprite::@14 place_sprites place_sprites::@1 place_sprites::@return place_sprites::@3 +Block Sequence Planned @begin @54 @end main main::@2 main::@3 anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return anim::@15 anim::@14 anim::@11 anim::@13 anim::@12 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return init::@11 clear_screen clear_screen::@1 clear_screen::@return clear_screen::@3 gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return gen_sintab::@24 progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return progress_inc::@3 getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_sprites::@4 gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@11 gen_chargen_sprite::@12 gen_chargen_sprite::@13 gen_chargen_sprite::@14 place_sprites place_sprites::@1 place_sprites::@return place_sprites::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @51 +Adding NOP phi() at start of @54 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -5082,9 +5186,9 @@ Culled Empty Block (label) gen_chargen_sprite::@12 Culled Empty Block (label) gen_chargen_sprite::@13 Culled Empty Block (label) gen_chargen_sprite::@14 Culled Empty Block (label) place_sprites::@3 -Block Sequence Planned @begin @51 @end main main::@2 main::@3 anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@4 anim::@5 anim::@return anim::@15 anim::@14 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return +Block Sequence Planned @begin @54 @end main main::@2 main::@3 anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@4 anim::@5 anim::@return anim::@15 anim::@14 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @51 +Adding NOP phi() at start of @54 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -5169,14 +5273,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@51 -@51: scope:[] from @begin + to:@54 +@54: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @51 +@end: scope:[] from @54 [3] phi() [ ] ( ) -main: scope:[main] from @51 +main: scope:[main] from @54 [4] phi() [ ] ( main:2 [ ] ) [5] call init [ ] ( main:2 [ ] ) to:main::@2 @@ -5631,109 +5735,109 @@ place_sprites::@return: scope:[place_sprites] from place_sprites::@1 DOMINATORS @begin dominated by @begin -@51 dominated by @begin @51 -@end dominated by @end @begin @51 -main dominated by main @begin @51 -main::@2 dominated by main::@2 main @begin @51 -main::@3 dominated by main::@2 main::@3 main @begin @51 -anim dominated by main::@2 main::@3 anim main @begin @51 -anim::@1 dominated by main::@2 main::@3 anim anim::@1 main @begin @51 -anim::@6 dominated by main::@2 main::@3 anim anim::@6 anim::@1 main @begin @51 -anim::@2 dominated by main::@2 main::@3 anim anim::@2 anim::@1 main @begin @51 -anim::@7 dominated by main::@2 main::@3 anim anim::@2 anim::@1 anim::@7 main @begin @51 -anim::@3 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 main @begin @51 -anim::@8 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin @51 -anim::@4 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @51 -anim::@5 dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @51 -anim::@return dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 anim::@return main @begin @51 -anim::@15 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin anim::@15 @51 -anim::@14 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin anim::@14 @51 -init dominated by init main @begin @51 -init::@1 dominated by init main @begin init::@1 @51 -init::@2 dominated by init main @begin init::@2 init::@1 @51 -init::@4 dominated by init main @begin init::@2 init::@1 init::@4 @51 -init::@5 dominated by init main @begin init::@2 init::@1 init::@5 init::@4 @51 -init::@6 dominated by init main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 -init::@7 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 @51 -init::@8 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@8 @51 -init::@9 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @51 -init::@return dominated by init main @begin init::@return init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @51 -clear_screen dominated by init clear_screen main @begin @51 -clear_screen::@1 dominated by init clear_screen main @begin @51 clear_screen::@1 -clear_screen::@return dominated by init clear_screen main @begin @51 clear_screen::@1 clear_screen::@return -gen_sintab dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 -gen_sintab::@3 dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -gen_sintab::@4 dominated by init gen_sintab main gen_sintab::@4 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -gen_sintab::@5 dominated by init gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -gen_sintab::@6 dominated by init gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -gen_sintab::@7 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -gen_sintab::@8 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -gen_sintab::@9 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -gen_sintab::@10 dominated by gen_sintab::@10 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -gen_sintab::@11 dominated by gen_sintab::@10 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -gen_sintab::@12 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -gen_sintab::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@14 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@15 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@16 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@17 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@18 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@19 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@20 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@21 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@22 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@23 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 gen_sintab::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -progress_inc dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -progress_inc::@2 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@2 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -progress_inc::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -progress_inc::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 progress_inc::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -getFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -getFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 getFAC::@return -addMEMtoFAC dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -addMEMtoFAC::@1 dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -addMEMtoFAC::@return dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC addMEMtoFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -prepareMEM dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 -prepareMEM::@return dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 prepareMEM::@return -mulFACbyMEM dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -mulFACbyMEM::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1 -mulFACbyMEM::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM::@return mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1 -sinFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -sinFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC sinFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 gen_sintab::@1 -divMEMbyFAC dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 divMEMbyFAC gen_sintab::@3 -divMEMbyFAC::@1 dominated by init divMEMbyFAC::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 divMEMbyFAC gen_sintab::@3 -divMEMbyFAC::@return dominated by init divMEMbyFAC::@1 divMEMbyFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 divMEMbyFAC gen_sintab::@3 -setFAC dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 -setFAC::@1 dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 setFAC::@1 @51 -setFAC::@return dominated by setFAC::@return init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 setFAC::@1 @51 -setMEMtoFAC dominated by init setMEMtoFAC gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -setMEMtoFAC::@1 dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -setMEMtoFAC::@return dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 setMEMtoFAC::@return gen_sintab::@3 -subFACfromARG dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -subFACfromARG::@return dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 subFACfromARG::@return gen_sintab::@3 -setARGtoFAC dominated by setARGtoFAC init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -setARGtoFAC::@return dominated by setARGtoFAC init gen_sintab main setARGtoFAC::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @51 gen_sintab::@3 -progress_init dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 @51 -progress_init::@return dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 progress_init::@return @51 -gen_sprites dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 @51 -gen_sprites::@1 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @51 -gen_sprites::@3 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 gen_sprites::@3 @51 -gen_sprites::@return dominated by init main gen_sprites::@return @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 gen_sprites::@3 @51 -gen_chargen_sprite dominated by init gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @51 -gen_chargen_sprite::@1 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @51 -gen_chargen_sprite::@2 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @51 -gen_chargen_sprite::@6 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @51 -gen_chargen_sprite::@3 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @51 -gen_chargen_sprite::@4 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @51 -gen_chargen_sprite::@7 dominated by init gen_chargen_sprite::@7 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @51 -gen_chargen_sprite::@5 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @51 -gen_chargen_sprite::@8 dominated by init gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @51 -gen_chargen_sprite::@9 dominated by init gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @51 -gen_chargen_sprite::@10 dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @51 -gen_chargen_sprite::@return dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @51 -place_sprites dominated by init main @begin init::@2 init::@1 @51 place_sprites -place_sprites::@1 dominated by init place_sprites::@1 main @begin init::@2 init::@1 @51 place_sprites -place_sprites::@return dominated by init place_sprites::@return place_sprites::@1 main @begin init::@2 init::@1 @51 place_sprites +@54 dominated by @begin @54 +@end dominated by @end @begin @54 +main dominated by main @begin @54 +main::@2 dominated by main::@2 main @begin @54 +main::@3 dominated by main::@2 main::@3 main @begin @54 +anim dominated by main::@2 main::@3 anim main @begin @54 +anim::@1 dominated by main::@2 main::@3 anim anim::@1 main @begin @54 +anim::@6 dominated by main::@2 main::@3 anim anim::@6 anim::@1 main @begin @54 +anim::@2 dominated by main::@2 main::@3 anim anim::@2 anim::@1 main @begin @54 +anim::@7 dominated by main::@2 main::@3 anim anim::@2 anim::@1 anim::@7 main @begin @54 +anim::@3 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 main @begin @54 +anim::@8 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin @54 +anim::@4 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @54 +anim::@5 dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @54 +anim::@return dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 anim::@return main @begin @54 +anim::@15 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin anim::@15 @54 +anim::@14 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin anim::@14 @54 +init dominated by init main @begin @54 +init::@1 dominated by init main @begin init::@1 @54 +init::@2 dominated by init main @begin init::@2 init::@1 @54 +init::@4 dominated by init main @begin init::@2 init::@1 init::@4 @54 +init::@5 dominated by init main @begin init::@2 init::@1 init::@5 init::@4 @54 +init::@6 dominated by init main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 +init::@7 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 @54 +init::@8 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@8 @54 +init::@9 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @54 +init::@return dominated by init main @begin init::@return init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @54 +clear_screen dominated by init clear_screen main @begin @54 +clear_screen::@1 dominated by init clear_screen main @begin @54 clear_screen::@1 +clear_screen::@return dominated by init clear_screen main @begin @54 clear_screen::@1 clear_screen::@return +gen_sintab dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 +gen_sintab::@3 dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +gen_sintab::@4 dominated by init gen_sintab main gen_sintab::@4 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +gen_sintab::@5 dominated by init gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +gen_sintab::@6 dominated by init gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +gen_sintab::@7 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +gen_sintab::@8 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +gen_sintab::@9 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +gen_sintab::@10 dominated by gen_sintab::@10 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +gen_sintab::@11 dominated by gen_sintab::@10 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +gen_sintab::@12 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +gen_sintab::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@14 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@15 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@16 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@17 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@18 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@19 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@20 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@21 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@22 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@23 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 gen_sintab::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +progress_inc dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +progress_inc::@2 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@2 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +progress_inc::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +progress_inc::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 progress_inc::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +getFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +getFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 getFAC::@return +addMEMtoFAC dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +addMEMtoFAC::@1 dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +addMEMtoFAC::@return dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC addMEMtoFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +prepareMEM dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 +prepareMEM::@return dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 prepareMEM::@return @54 +mulFACbyMEM dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +mulFACbyMEM::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1 +mulFACbyMEM::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM::@return mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1 +sinFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +sinFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC sinFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 gen_sintab::@1 +divMEMbyFAC dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 divMEMbyFAC gen_sintab::@3 +divMEMbyFAC::@1 dominated by init divMEMbyFAC::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 divMEMbyFAC gen_sintab::@3 +divMEMbyFAC::@return dominated by init divMEMbyFAC::@1 divMEMbyFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 divMEMbyFAC gen_sintab::@3 +setFAC dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 +setFAC::@1 dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 setFAC::@1 @54 +setFAC::@return dominated by setFAC::@return init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 setFAC::@1 @54 +setMEMtoFAC dominated by init setMEMtoFAC gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +setMEMtoFAC::@1 dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +setMEMtoFAC::@return dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 setMEMtoFAC::@return gen_sintab::@3 +subFACfromARG dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +subFACfromARG::@return dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 subFACfromARG::@return gen_sintab::@3 +setARGtoFAC dominated by setARGtoFAC init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +setARGtoFAC::@return dominated by setARGtoFAC init gen_sintab main setARGtoFAC::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @54 gen_sintab::@3 +progress_init dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 @54 +progress_init::@return dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 progress_init::@return @54 +gen_sprites dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 @54 +gen_sprites::@1 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @54 +gen_sprites::@3 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 gen_sprites::@3 @54 +gen_sprites::@return dominated by init main gen_sprites::@return @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 gen_sprites::@3 @54 +gen_chargen_sprite dominated by init gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @54 +gen_chargen_sprite::@1 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @54 +gen_chargen_sprite::@2 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @54 +gen_chargen_sprite::@6 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @54 +gen_chargen_sprite::@3 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @54 +gen_chargen_sprite::@4 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @54 +gen_chargen_sprite::@7 dominated by init gen_chargen_sprite::@7 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @54 +gen_chargen_sprite::@5 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @54 +gen_chargen_sprite::@8 dominated by init gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @54 +gen_chargen_sprite::@9 dominated by init gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @54 +gen_chargen_sprite::@10 dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @54 +gen_chargen_sprite::@return dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @54 +place_sprites dominated by init main @begin init::@2 init::@1 @54 place_sprites +place_sprites::@1 dominated by init place_sprites::@1 main @begin init::@2 init::@1 @54 place_sprites +place_sprites::@return dominated by init place_sprites::@return place_sprites::@1 main @begin init::@2 init::@1 @54 place_sprites NATURAL LOOPS Found back edge: Loop head: main::@2 tails: main::@2 blocks: null @@ -6208,17 +6312,17 @@ INITIAL ASM .label sin_idx_y = 3 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @51 [phi:@begin->@51] -b51_from_bbegin: - jmp b51 -//SEG4 @51 -b51: +//SEG3 [1] phi from @begin to @54 [phi:@begin->@54] +b54_from_bbegin: + jmp b54 +//SEG4 @54 +b54: //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @51 to main [phi:@51->main] -main_from_b51: +//SEG6 [4] phi from @54 to main [phi:@54->main] +main_from_b54: jsr main -//SEG7 [3] phi from @51 to @end [phi:@51->@end] -bend_from_b51: +//SEG7 [3] phi from @54 to @end [phi:@54->@end] +bend_from_b54: jmp bend //SEG8 @end bend: @@ -7936,17 +8040,17 @@ ASSEMBLER BEFORE OPTIMIZATION .label sin_idx_y = 3 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @51 [phi:@begin->@51] -b51_from_bbegin: - jmp b51 -//SEG4 @51 -b51: +//SEG3 [1] phi from @begin to @54 [phi:@begin->@54] +b54_from_bbegin: + jmp b54 +//SEG4 @54 +b54: //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @51 to main [phi:@51->main] -main_from_b51: +//SEG6 [4] phi from @54 to main [phi:@54->main] +main_from_b54: jsr main -//SEG7 [3] phi from @51 to @end [phi:@51->@end] -bend_from_b51: +//SEG7 [3] phi from @54 to @end [phi:@54->@end] +bend_from_b54: jmp bend //SEG8 @end bend: @@ -9222,7 +9326,7 @@ place_sprites: { sintab_y: .fill $c5, 0 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b51 +Removing instruction jmp b54 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b3 @@ -9340,9 +9444,9 @@ Replacing label b2_from_b8 with b2 Replacing label b1_from_b9 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b51_from_bbegin: -Removing instruction main_from_b51: -Removing instruction bend_from_b51: +Removing instruction b54_from_bbegin: +Removing instruction main_from_b54: +Removing instruction bend_from_b54: Removing instruction b2_from_b2: Removing instruction b3_from_b2: Removing instruction b1_from_b3: @@ -9409,7 +9513,7 @@ Removing instruction b4_from_b5: Removing instruction b5_from_b4: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b51: +Removing instruction b54: Removing instruction bend: Removing instruction init_from_main: Removing instruction b2_from_main: @@ -9528,7 +9632,7 @@ Removing unreachable instruction jmp b4 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @51 +(label) @54 (label) @begin (label) @end (byte*) BORDERCOL @@ -9896,12 +10000,12 @@ Score: 768747 .label sin_idx_x = 2 .label sin_idx_y = 3 //SEG2 @begin -//SEG3 [1] phi from @begin to @51 [phi:@begin->@51] -//SEG4 @51 +//SEG3 [1] phi from @begin to @54 [phi:@begin->@54] +//SEG4 @54 //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @51 to main [phi:@51->main] +//SEG6 [4] phi from @54 to main [phi:@54->main] jsr main -//SEG7 [3] phi from @51 to @end [phi:@51->@end] +//SEG7 [3] phi from @54 to @end [phi:@54->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym index 1a8e25e11..585ca41b4 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym @@ -1,4 +1,4 @@ -(label) @51 +(label) @54 (label) @begin (label) @end (byte*) BORDERCOL diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.cfg b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.cfg index 9f5e00a70..1a1fc9cfb 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@8 -@8: scope:[] from @begin + to:@11 +@11: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @8 +@end: scope:[] from @11 [3] phi() [ ] ( ) -main: scope:[main] from @8 +main: scope:[main] from @11 [4] phi() [ ] ( main:2 [ ] ) [5] call keyboard_init [ ] ( main:2 [ ] ) to:main::@4 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.log b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.log index 35dc47648..e8a8b0584 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.log @@ -345,6 +345,24 @@ const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size Adding pre/post-modifier (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode @@ -352,6 +370,8 @@ Adding pre/post-modifier (byte) keyboard_events_size ← -- (byte) keyboard_even SYMBOLS (byte~) $0 (label) @1 +(label) @10 +(label) @11 (label) @2 (label) @3 (label) @4 @@ -359,6 +379,7 @@ SYMBOLS (label) @6 (label) @7 (label) @8 +(label) @9 (label) @begin (label) @end (byte*) BGCOL @@ -625,6 +646,34 @@ SYMBOLS (label) main::@8 (label) main::@9 (label) main::@return +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 @@ -729,6 +778,51 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 (byte) KEY_DEL ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) KEY_RETURN ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) KEY_CRSR_RIGHT ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -796,7 +890,7 @@ INITIAL CONTROL FLOW GRAPH (byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@1 + to:@4 keyboard_init: scope:[keyboard_init] from *((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255 *((byte*) CIA1_PORT_B_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -804,8 +898,8 @@ keyboard_init: scope:[keyboard_init] from keyboard_init::@return: scope:[keyboard_init] from keyboard_init return to:@return -@1: scope:[] from @begin - to:@2 +@4: scope:[] from @3 + to:@5 keyboard_matrix_read: scope:[keyboard_matrix_read] from *((byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 ← ~ *((byte*) CIA1_PORT_B) @@ -818,8 +912,8 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri to:@return keyboard_matrix_read::@1: scope:[keyboard_matrix_read] from to:keyboard_matrix_read::@return -@2: scope:[] from @1 - to:@3 +@5: scope:[] from @4 + to:@6 keyboard_key_pressed: scope:[keyboard_key_pressed] from (byte~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key & (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) keyboard_key_pressed::colidx ← (byte~) keyboard_key_pressed::$0 @@ -835,8 +929,8 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p to:@return keyboard_key_pressed::@1: scope:[keyboard_key_pressed] from to:keyboard_key_pressed::@return -@3: scope:[] from @2 - to:@4 +@6: scope:[] from @5 + to:@7 keyboard_get_keycode: scope:[keyboard_get_keycode] from (byte) keyboard_get_keycode::return ← *((byte[]) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch) to:keyboard_get_keycode::@return @@ -846,7 +940,7 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k to:@return keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from to:keyboard_get_keycode::@return -@4: scope:[] from @3 +@7: scope:[] from @6 (byte[8]) keyboard_events ← { fill( 8, 0) } (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -857,7 +951,7 @@ keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT (byte) KEY_MODIFIER_SHIFT ← (byte~) $0 (byte[8]) keyboard_scan_values ← { fill( 8, 0) } - to:@5 + to:@8 keyboard_event_scan: scope:[keyboard_event_scan] from (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -970,8 +1064,8 @@ keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan: keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@12 return to:@return -@5: scope:[] from @4 - to:@6 +@8: scope:[] from @7 + to:@9 keyboard_event_pressed: scope:[keyboard_event_pressed] from (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3 (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0) @@ -985,8 +1079,8 @@ keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_e to:@return keyboard_event_pressed::@1: scope:[keyboard_event_pressed] from to:keyboard_event_pressed::@return -@6: scope:[] from @5 - to:@7 +@9: scope:[] from @8 + to:@10 keyboard_event_get: scope:[keyboard_event_get] from (bool~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) keyboard_event_get::$0) goto keyboard_event_get::@1 @@ -1010,8 +1104,8 @@ keyboard_event_get::@5: scope:[keyboard_event_get] from to:keyboard_event_get::@1 keyboard_event_get::@6: scope:[keyboard_event_get] from to:keyboard_event_get::@2 -@7: scope:[] from @6 - to:@8 +@10: scope:[] from @9 + to:@11 main: scope:[main] from (void~) main::$0 ← call keyboard_init to:main::@1 @@ -1050,11 +1144,15 @@ main::@12: scope:[main] from main::@return: scope:[main] from main::@3 return to:@return -@8: scope:[] from @7 +@11: scope:[] from @10 call main to:@end -@end: scope:[] from @8 +@end: scope:[] from @11 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Removing unused procedure keyboard_get_keycode Removing unused procedure keyboard_event_scan Removing unused procedure keyboard_event_get @@ -1192,14 +1290,16 @@ Eliminating unused variable (byte~) $0 and assignment [80] (byte~) $0 ← (byte) Eliminating unused variable (byte) KEY_MODIFIER_LSHIFT and assignment [29] (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1 Eliminating unused variable (byte) KEY_MODIFIER_RSHIFT and assignment [30] (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2 Removing empty block @1 -Removing empty block keyboard_matrix_read::@1 Removing empty block @2 -Removing empty block keyboard_key_pressed::@1 -Removing empty block @3 Removing empty block @4 +Removing empty block keyboard_matrix_read::@1 Removing empty block @5 +Removing empty block keyboard_key_pressed::@1 Removing empty block @6 Removing empty block @7 +Removing empty block @8 +Removing empty block @9 +Removing empty block @10 Removing empty block main::@7 Removing empty block main::@3 Removing empty block main::@8 @@ -1220,10 +1320,12 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + to:@3 +@3: scope:[] from @begin (byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 60 (byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@8 + to:@11 keyboard_init: scope:[keyboard_init] from main *((byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 *((byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1265,7 +1367,7 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p (byte) keyboard_key_pressed::return#1 ← (byte) keyboard_key_pressed::return#3 return to:@return -main: scope:[main] from @8 +main: scope:[main] from @11 call keyboard_init to:main::@13 main::@13: scope:[main] from main @@ -1299,16 +1401,17 @@ main::@10: scope:[main] from main::@14 main::@return: scope:[main] from main::@1 return to:@return -@8: scope:[] from @begin +@11: scope:[] from @3 call main - to:@9 -@9: scope:[] from @8 + to:@12 +@12: scope:[] from @11 to:@end -@end: scope:[] from @9 +@end: scope:[] from @12 SYMBOL TABLE SSA -(label) @8 -(label) @9 +(label) @11 +(label) @12 +(label) @3 (label) @begin (label) @end (byte*) BGCOL @@ -1387,7 +1490,7 @@ SYMBOL TABLE SSA OPTIMIZING CONTROL FLOW GRAPH Culled Empty Block (label) main::@13 Culled Empty Block (label) main::@2 -Culled Empty Block (label) @9 +Culled Empty Block (label) @12 Succesful SSA optimization Pass2CullEmptyBlocks Not aliassing across scopes: keyboard_matrix_read::rowid#1 keyboard_matrix_read::rowid#0 Not aliassing across scopes: keyboard_key_pressed::key#1 keyboard_key_pressed::key#0 @@ -1444,6 +1547,7 @@ if() condition always true - replacing block destination if(true) goto main::@4 Succesful SSA optimization Pass2ConstantIfs Removing unused block main::@return Succesful SSA optimization Pass2EliminateUnusedBlocks +Culled Empty Block (label) @3 Culled Empty Block (label) main::@1 Succesful SSA optimization Pass2CullEmptyBlocks Not aliassing across scopes: keyboard_matrix_read::return#2 keyboard_matrix_read::return#0 @@ -1458,10 +1562,10 @@ OPTIMIZING CONTROL FLOW GRAPH Constant inlined keyboard_key_pressed::key#0 = (const byte) KEY_SPACE#0 Constant inlined keyboard_matrix_read::rowid#0 = (const byte) keyboard_key_pressed::rowidx#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @8 @end main main::@4 main::@9 main::@14 main::@10 main::@5 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_init keyboard_init::@return -Block Sequence Planned @begin @8 @end main main::@4 main::@9 main::@14 main::@10 main::@5 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_init keyboard_init::@return +Block Sequence Planned @begin @11 @end main main::@4 main::@9 main::@14 main::@10 main::@5 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_init keyboard_init::@return +Block Sequence Planned @begin @11 @end main main::@4 main::@9 main::@14 main::@10 main::@5 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_init keyboard_init::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @8 +Adding NOP phi() at start of @11 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@9 @@ -1476,9 +1580,9 @@ Propagating live ranges... Propagating live ranges... Created 0 initial phi equivalence classes Coalesced down to 0 phi equivalence classes -Block Sequence Planned @begin @8 @end main main::@4 main::@9 main::@14 main::@10 main::@5 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_init keyboard_init::@return +Block Sequence Planned @begin @11 @end main main::@4 main::@9 main::@14 main::@10 main::@5 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_init keyboard_init::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @8 +Adding NOP phi() at start of @11 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@9 @@ -1490,14 +1594,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@8 -@8: scope:[] from @begin + to:@11 +@11: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @8 +@end: scope:[] from @11 [3] phi() [ ] ( ) -main: scope:[main] from @8 +main: scope:[main] from @11 [4] phi() [ ] ( main:2 [ ] ) [5] call keyboard_init [ ] ( main:2 [ ] ) to:main::@4 @@ -1548,21 +1652,21 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init DOMINATORS @begin dominated by @begin -@8 dominated by @begin @8 -@end dominated by @begin @end @8 -main dominated by @begin main @8 -main::@4 dominated by @begin main @8 main::@4 -main::@9 dominated by main::@9 @begin main @8 main::@4 -main::@14 dominated by main::@9 @begin main main::@14 @8 main::@4 -main::@10 dominated by main::@9 @begin main::@10 main main::@14 @8 main::@4 -main::@5 dominated by main::@9 @begin main main::@14 @8 main::@5 main::@4 -keyboard_key_pressed dominated by main::@9 @begin main keyboard_key_pressed @8 main::@4 -keyboard_key_pressed::@2 dominated by main::@9 @begin main keyboard_key_pressed @8 keyboard_key_pressed::@2 main::@4 -keyboard_key_pressed::@return dominated by main::@9 @begin main keyboard_key_pressed keyboard_key_pressed::@return @8 keyboard_key_pressed::@2 main::@4 -keyboard_matrix_read dominated by main::@9 @begin keyboard_matrix_read main keyboard_key_pressed @8 main::@4 -keyboard_matrix_read::@return dominated by main::@9 @begin keyboard_matrix_read main keyboard_matrix_read::@return keyboard_key_pressed @8 main::@4 -keyboard_init dominated by @begin main keyboard_init @8 -keyboard_init::@return dominated by @begin main keyboard_init @8 keyboard_init::@return +@11 dominated by @11 @begin +@end dominated by @11 @begin @end +main dominated by @11 @begin main +main::@4 dominated by @11 @begin main main::@4 +main::@9 dominated by @11 main::@9 @begin main main::@4 +main::@14 dominated by @11 main::@9 @begin main main::@14 main::@4 +main::@10 dominated by @11 main::@9 @begin main::@10 main main::@14 main::@4 +main::@5 dominated by @11 main::@9 @begin main main::@14 main::@5 main::@4 +keyboard_key_pressed dominated by @11 main::@9 @begin main keyboard_key_pressed main::@4 +keyboard_key_pressed::@2 dominated by @11 main::@9 @begin main keyboard_key_pressed keyboard_key_pressed::@2 main::@4 +keyboard_key_pressed::@return dominated by @11 main::@9 @begin main keyboard_key_pressed keyboard_key_pressed::@return keyboard_key_pressed::@2 main::@4 +keyboard_matrix_read dominated by @11 main::@9 @begin keyboard_matrix_read main keyboard_key_pressed main::@4 +keyboard_matrix_read::@return dominated by @11 main::@9 @begin keyboard_matrix_read main keyboard_matrix_read::@return keyboard_key_pressed main::@4 +keyboard_init dominated by @11 @begin main keyboard_init +keyboard_init::@return dominated by @11 @begin main keyboard_init keyboard_init::@return NATURAL LOOPS Found back edge: Loop head: main::@4 tails: main::@4 blocks: null @@ -1655,17 +1759,17 @@ INITIAL ASM .const KEY_SPACE = $3c //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @8 [phi:@begin->@8] -b8_from_bbegin: - jmp b8 -//SEG4 @8 -b8: +//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] +b11_from_bbegin: + jmp b11 +//SEG4 @11 +b11: //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @8 to main [phi:@8->main] -main_from_b8: +//SEG6 [4] phi from @11 to main [phi:@11->main] +main_from_b11: jsr main -//SEG7 [3] phi from @8 to @end [phi:@8->@end] -bend_from_b8: +//SEG7 [3] phi from @11 to @end [phi:@11->@end] +bend_from_b11: jmp bend //SEG8 @end bend: @@ -1824,17 +1928,17 @@ ASSEMBLER BEFORE OPTIMIZATION .const KEY_SPACE = $3c //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @8 [phi:@begin->@8] -b8_from_bbegin: - jmp b8 -//SEG4 @8 -b8: +//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] +b11_from_bbegin: + jmp b11 +//SEG4 @11 +b11: //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @8 to main [phi:@8->main] -main_from_b8: +//SEG6 [4] phi from @11 to main [phi:@11->main] +main_from_b11: jsr main -//SEG7 [3] phi from @8 to @end [phi:@8->@end] -bend_from_b8: +//SEG7 [3] phi from @11 to @end [phi:@11->@end] +bend_from_b11: jmp bend //SEG8 @end bend: @@ -1935,7 +2039,7 @@ keyboard_init: { keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b8 +Removing instruction jmp b11 Removing instruction jmp bend Removing instruction jmp b4 Removing instruction jmp b9 @@ -1947,13 +2051,13 @@ Removing instruction jmp breturn Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: -Removing instruction b8_from_bbegin: -Removing instruction main_from_b8: -Removing instruction bend_from_b8: +Removing instruction b11_from_bbegin: +Removing instruction main_from_b11: +Removing instruction bend_from_b11: Removing instruction b9_from_b4: Removing instruction keyboard_key_pressed_from_b9: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b8: +Removing instruction b11: Removing instruction bend: Removing instruction b9: Removing instruction b14: @@ -1965,7 +2069,7 @@ Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE -(label) @8 +(label) @11 (label) @begin (label) @end (byte*) BGCOL @@ -2045,12 +2149,12 @@ Score: 1147 .const BLUE = 6 .const KEY_SPACE = $3c //SEG2 @begin -//SEG3 [1] phi from @begin to @8 [phi:@begin->@8] -//SEG4 @8 +//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] +//SEG4 @11 //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @8 to main [phi:@8->main] +//SEG6 [4] phi from @11 to main [phi:@11->main] jsr main -//SEG7 [3] phi from @8 to @end [phi:@8->@end] +//SEG7 [3] phi from @11 to @end [phi:@11->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.sym index 43ad63c9d..ce65877ce 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.sym @@ -1,4 +1,4 @@ -(label) @8 +(label) @11 (label) @begin (label) @end (byte*) BGCOL diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.cfg b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.cfg index dae6bfab3..933f63d70 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@8 -@8: scope:[] from @begin + to:@11 +@11: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @8 +@end: scope:[] from @11 [3] phi() [ ] ( ) -main: scope:[main] from @8 +main: scope:[main] from @11 [4] phi() [ ] ( main:2 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.log b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.log index 1c367400d..dd2af31c6 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.log @@ -376,6 +376,24 @@ const byte LIGHT_GREEN = $d; const byte LIGHT_BLUE = $e; const byte LIGHT_GREY = $f; +// Get the value to store into D018 to display a specific screen and charset/bitmap +// Optimized for ASM from (byte)((((word)screen&$3fff)/$40)|(((word)charset&$3fff)/$400)); +inline byte toD018(byte* screen, byte* gfx) { + return (>((((word)screen&$3fff)<<2)))|(((>((word)gfx))>>2)&$f); +} + +// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank +// Optimized for ASM from %00000011 ^ (byte)((word)gfx/$4000) +inline byte toDd00(byte* gfx) { + return %00000011 ^ (>((word)gfx))>>6; +} + +// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed +inline void vicSelectGfxBank(byte* gfx) { + *CIA2_PORT_A_DDR = %00000011; + *CIA2_PORT_A = toDd00(gfx); +} + Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size Adding pre/post-modifier (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode @@ -386,6 +404,8 @@ Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i SYMBOLS (byte~) $0 (label) @1 +(label) @10 +(label) @11 (label) @2 (label) @3 (label) @4 @@ -393,6 +413,7 @@ SYMBOLS (label) @6 (label) @7 (label) @8 +(label) @9 (label) @begin (label) @end (byte*) BGCOL @@ -697,6 +718,34 @@ SYMBOLS (byte) main::row_pressed_bits (byte*) main::sc (byte*) main::screen +inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) +(word~) toD018::$0 +(word~) toD018::$1 +(word~) toD018::$2 +(byte~) toD018::$3 +(word~) toD018::$4 +(byte~) toD018::$5 +(byte~) toD018::$6 +(byte~) toD018::$7 +(byte~) toD018::$8 +(label) toD018::@1 +(label) toD018::@return +(byte*) toD018::gfx +(byte) toD018::return +(byte*) toD018::screen +inline (byte()) toDd00((byte*) toDd00::gfx) +(word~) toDd00::$0 +(byte~) toDd00::$1 +(byte~) toDd00::$2 +(byte/word/dword~) toDd00::$3 +(label) toDd00::@1 +(label) toDd00::@return +(byte*) toDd00::gfx +(byte) toDd00::return +inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) +(byte~) vicSelectGfxBank::$0 +(label) vicSelectGfxBank::@return +(byte*) vicSelectGfxBank::gfx Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 @@ -803,6 +852,51 @@ INITIAL CONTROL FLOW GRAPH (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@1 +toD018: scope:[toD018] from + (word~) toD018::$0 ← ((word)) (byte*) toD018::screen + (word~) toD018::$1 ← (word~) toD018::$0 & (word/signed word/dword/signed dword) 16383 + (word~) toD018::$2 ← (word~) toD018::$1 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$3 ← > (word~) toD018::$2 + (word~) toD018::$4 ← ((word)) (byte*) toD018::gfx + (byte~) toD018::$5 ← > (word~) toD018::$4 + (byte~) toD018::$6 ← (byte~) toD018::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte~) toD018::$7 ← (byte~) toD018::$6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte~) toD018::$8 ← (byte~) toD018::$3 | (byte~) toD018::$7 + (byte) toD018::return ← (byte~) toD018::$8 + to:toD018::@return +toD018::@return: scope:[toD018] from toD018 toD018::@1 + (byte) toD018::return ← (byte) toD018::return + return (byte) toD018::return + to:@return +toD018::@1: scope:[toD018] from + to:toD018::@return +@1: scope:[] from @begin + to:@2 +toDd00: scope:[toDd00] from + (word~) toDd00::$0 ← ((word)) (byte*) toDd00::gfx + (byte~) toDd00::$1 ← > (word~) toDd00::$0 + (byte~) toDd00::$2 ← (byte~) toDd00::$1 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword~) toDd00::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte~) toDd00::$2 + (byte) toDd00::return ← (byte/word/dword~) toDd00::$3 + to:toDd00::@return +toDd00::@return: scope:[toDd00] from toDd00 toDd00::@1 + (byte) toDd00::return ← (byte) toDd00::return + return (byte) toDd00::return + to:@return +toDd00::@1: scope:[toDd00] from + to:toDd00::@return +@2: scope:[] from @1 + to:@3 +vicSelectGfxBank: scope:[vicSelectGfxBank] from + *((byte*) CIA2_PORT_A_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx + *((byte*) CIA2_PORT_A) ← (byte~) vicSelectGfxBank::$0 + to:vicSelectGfxBank::@return +vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank + return + to:@return +@3: scope:[] from @2 (byte) KEY_DEL ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) KEY_RETURN ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) KEY_CRSR_RIGHT ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -870,7 +964,7 @@ INITIAL CONTROL FLOW GRAPH (byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@1 + to:@4 keyboard_init: scope:[keyboard_init] from *((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255 *((byte*) CIA1_PORT_B_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -878,8 +972,8 @@ keyboard_init: scope:[keyboard_init] from keyboard_init::@return: scope:[keyboard_init] from keyboard_init return to:@return -@1: scope:[] from @begin - to:@2 +@4: scope:[] from @3 + to:@5 keyboard_matrix_read: scope:[keyboard_matrix_read] from *((byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 ← ~ *((byte*) CIA1_PORT_B) @@ -892,8 +986,8 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri to:@return keyboard_matrix_read::@1: scope:[keyboard_matrix_read] from to:keyboard_matrix_read::@return -@2: scope:[] from @1 - to:@3 +@5: scope:[] from @4 + to:@6 keyboard_key_pressed: scope:[keyboard_key_pressed] from (byte~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key & (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) keyboard_key_pressed::colidx ← (byte~) keyboard_key_pressed::$0 @@ -909,8 +1003,8 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p to:@return keyboard_key_pressed::@1: scope:[keyboard_key_pressed] from to:keyboard_key_pressed::@return -@3: scope:[] from @2 - to:@4 +@6: scope:[] from @5 + to:@7 keyboard_get_keycode: scope:[keyboard_get_keycode] from (byte) keyboard_get_keycode::return ← *((byte[]) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch) to:keyboard_get_keycode::@return @@ -920,7 +1014,7 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k to:@return keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from to:keyboard_get_keycode::@return -@4: scope:[] from @3 +@7: scope:[] from @6 (byte[8]) keyboard_events ← { fill( 8, 0) } (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -931,7 +1025,7 @@ keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT (byte) KEY_MODIFIER_SHIFT ← (byte~) $0 (byte[8]) keyboard_scan_values ← { fill( 8, 0) } - to:@5 + to:@8 keyboard_event_scan: scope:[keyboard_event_scan] from (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1044,8 +1138,8 @@ keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan: keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@12 return to:@return -@5: scope:[] from @4 - to:@6 +@8: scope:[] from @7 + to:@9 keyboard_event_pressed: scope:[keyboard_event_pressed] from (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3 (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0) @@ -1059,8 +1153,8 @@ keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_e to:@return keyboard_event_pressed::@1: scope:[keyboard_event_pressed] from to:keyboard_event_pressed::@return -@6: scope:[] from @5 - to:@7 +@9: scope:[] from @8 + to:@10 keyboard_event_get: scope:[keyboard_event_get] from (bool~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) keyboard_event_get::$0) goto keyboard_event_get::@1 @@ -1084,8 +1178,8 @@ keyboard_event_get::@5: scope:[keyboard_event_get] from to:keyboard_event_get::@1 keyboard_event_get::@6: scope:[keyboard_event_get] from to:keyboard_event_get::@2 -@7: scope:[] from @6 - to:@8 +@10: scope:[] from @9 + to:@11 main: scope:[main] from (byte*) main::sc ← ((byte*)) (word/signed word/dword/signed dword) 1024 to:main::@1 @@ -1195,11 +1289,15 @@ main::@26: scope:[main] from main::@return: scope:[main] from main::@4 return to:@return -@8: scope:[] from @7 +@11: scope:[] from @10 call main to:@end -@end: scope:[] from @8 +@end: scope:[] from @11 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Removing unused procedure toD018 +Removing unused procedure toDd00 +Removing unused procedure vicSelectGfxBank Removing unused procedure keyboard_event_scan Removing unused procedure keyboard_event_get Removing unused procedure keyboard_event_pressed @@ -1289,15 +1387,17 @@ Eliminating unused variable (byte~) $0 and assignment [81] (byte~) $0 ← (byte) Eliminating unused variable (byte) KEY_MODIFIER_LSHIFT and assignment [79] (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1 Eliminating unused variable (byte) KEY_MODIFIER_RSHIFT and assignment [80] (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2 Removing empty block @1 -Removing empty block keyboard_matrix_read::@1 Removing empty block @2 -Removing empty block keyboard_key_pressed::@1 -Removing empty block @3 -Removing empty block keyboard_get_keycode::@1 Removing empty block @4 +Removing empty block keyboard_matrix_read::@1 Removing empty block @5 +Removing empty block keyboard_key_pressed::@1 Removing empty block @6 +Removing empty block keyboard_get_keycode::@1 Removing empty block @7 +Removing empty block @8 +Removing empty block @9 +Removing empty block @10 Removing empty block main::@15 Removing empty block main::@4 Removing empty block main::@16 @@ -1320,6 +1420,8 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + to:@3 +@3: scope:[] from @begin (byte) KEY_3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) KEY_W#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 (byte) KEY_A#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 @@ -1373,7 +1475,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte[]) keyboard_char_keycodes#0 ← { (byte) KEY_AT#0, (byte) KEY_A#0, (byte) KEY_B#0, (byte) KEY_C#0, (byte) KEY_D#0, (byte) KEY_E#0, (byte) KEY_F#0, (byte) KEY_G#0, (byte) KEY_H#0, (byte) KEY_I#0, (byte) KEY_J#0, (byte) KEY_K#0, (byte) KEY_L#0, (byte) KEY_M#0, (byte) KEY_N#0, (byte) KEY_O#0, (byte) KEY_P#0, (byte) KEY_Q#0, (byte) KEY_R#0, (byte) KEY_S#0, (byte) KEY_T#0, (byte) KEY_U#0, (byte) KEY_V#0, (byte) KEY_W#0, (byte) KEY_X#0, (byte) KEY_Y#0, (byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP#0, (byte) KEY_ARROW_LEFT#0, (byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK#0, (byte) KEY_PLUS#0, (byte) KEY_COMMA#0, (byte) KEY_MINUS#0, (byte) KEY_DOT#0, (byte) KEY_SLASH#0, (byte) KEY_0#0, (byte) KEY_1#0, (byte) KEY_2#0, (byte) KEY_3#0, (byte) KEY_4#0, (byte) KEY_5#0, (byte) KEY_6#0, (byte) KEY_7#0, (byte) KEY_8#0, (byte) KEY_9#0, (byte) KEY_COLON#0, (byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@8 + to:@11 keyboard_init: scope:[keyboard_init] from main::@14 *((byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 *((byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1424,7 +1526,7 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k (byte) keyboard_get_keycode::return#1 ← (byte) keyboard_get_keycode::return#3 return to:@return -main: scope:[main] from @8 +main: scope:[main] from @11 (byte*) main::sc#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 to:main::@1 main::@1: scope:[main] from main main::@1 @@ -1587,16 +1689,17 @@ main::@13: scope:[main] from main::@11 main::@13 main::@return: scope:[main] from main::@2 return to:@return -@8: scope:[] from @begin +@11: scope:[] from @3 call main - to:@9 -@9: scope:[] from @8 + to:@12 +@12: scope:[] from @11 to:@end -@end: scope:[] from @9 +@end: scope:[] from @12 SYMBOL TABLE SSA -(label) @8 -(label) @9 +(label) @11 +(label) @12 +(label) @3 (label) @begin (label) @end (byte*) CIA1_PORT_A @@ -1887,7 +1990,7 @@ SYMBOL TABLE SSA OPTIMIZING CONTROL FLOW GRAPH Culled Empty Block (label) main::@27 Culled Empty Block (label) main::@3 -Culled Empty Block (label) @9 +Culled Empty Block (label) @12 Succesful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) main::$14 ← (byte) main::key#0 == (byte/signed byte/word/signed word/dword/signed dword) 63 from (bool~) main::$13 ← (byte) main::key#0 != (byte/signed byte/word/signed word/dword/signed dword) 63 Inversing boolean not (bool~) main::$17 ← (byte~) main::$15 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$16 ← (byte~) main::$15 != (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -2064,6 +2167,7 @@ if() condition always true - replacing block destination if(true) goto main::@5 Succesful SSA optimization Pass2ConstantIfs Removing unused block main::@return Succesful SSA optimization Pass2EliminateUnusedBlocks +Culled Empty Block (label) @3 Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@17 Culled Empty Block (label) main::@12 @@ -2119,7 +2223,7 @@ Constant inlined main::sc#0 = ((byte*))(word/signed word/dword/signed dword) 102 Constant inlined main::row#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::ch#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @8 @end main main::@1 main::@14 main::@5 main::@6 main::@28 main::@7 main::@18 main::@9 main::@20 main::@21 main::@10 main::@29 main::@22 main::@30 main::@23 main::@11 main::@13 main::@8 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return keyboard_init keyboard_init::@return +Block Sequence Planned @begin @11 @end main main::@1 main::@14 main::@5 main::@6 main::@28 main::@7 main::@18 main::@9 main::@20 main::@21 main::@10 main::@29 main::@22 main::@30 main::@23 main::@11 main::@13 main::@8 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return keyboard_init keyboard_init::@return Added new block during phi lifting main::@31(between main::@1 and main::@1) Added new block during phi lifting main::@32(between main::@20 and main::@6) Added new block during phi lifting main::@33(between main::@9 and main::@7) @@ -2128,9 +2232,9 @@ Added new block during phi lifting main::@35(between main::@30 and main::@11) Added new block during phi lifting main::@36(between main::@29 and main::@11) Added new block during phi lifting main::@37(between main::@11 and main::@13) Added new block during phi lifting main::@38(between main::@13 and main::@13) -Block Sequence Planned @begin @8 @end main main::@1 main::@14 main::@5 main::@6 main::@28 main::@7 main::@18 main::@9 main::@20 main::@21 main::@10 main::@29 main::@22 main::@30 main::@23 main::@11 main::@37 main::@13 main::@38 main::@34 main::@35 main::@36 main::@32 main::@33 main::@8 main::@31 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return keyboard_init keyboard_init::@return +Block Sequence Planned @begin @11 @end main main::@1 main::@14 main::@5 main::@6 main::@28 main::@7 main::@18 main::@9 main::@20 main::@21 main::@10 main::@29 main::@22 main::@30 main::@23 main::@11 main::@37 main::@13 main::@38 main::@34 main::@35 main::@36 main::@32 main::@33 main::@8 main::@31 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return keyboard_init keyboard_init::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @8 +Adding NOP phi() at start of @11 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@14 @@ -2178,9 +2282,9 @@ Culled Empty Block (label) main::@36 Culled Empty Block (label) main::@32 Culled Empty Block (label) main::@33 Culled Empty Block (label) main::@31 -Block Sequence Planned @begin @8 @end main main::@1 main::@14 main::@5 main::@6 main::@28 main::@7 main::@18 main::@9 main::@20 main::@21 main::@10 main::@29 main::@22 main::@30 main::@23 main::@11 main::@13 main::@8 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return keyboard_init keyboard_init::@return +Block Sequence Planned @begin @11 @end main main::@1 main::@14 main::@5 main::@6 main::@28 main::@7 main::@18 main::@9 main::@20 main::@21 main::@10 main::@29 main::@22 main::@30 main::@23 main::@11 main::@13 main::@8 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return keyboard_init keyboard_init::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @8 +Adding NOP phi() at start of @11 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@14 @@ -2200,14 +2304,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@8 -@8: scope:[] from @begin + to:@11 +@11: scope:[] from @begin [1] phi() [ ] ( ) [2] call main [ ] ( ) to:@end -@end: scope:[] from @8 +@end: scope:[] from @11 [3] phi() [ ] ( ) -main: scope:[main] from @8 +main: scope:[main] from @11 [4] phi() [ ] ( main:2 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 @@ -2331,36 +2435,36 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init DOMINATORS @begin dominated by @begin -@8 dominated by @begin @8 -@end dominated by @end @begin @8 -main dominated by main @begin @8 -main::@1 dominated by main main::@1 @begin @8 -main::@14 dominated by main main::@1 @begin main::@14 @8 -main::@5 dominated by main main::@1 main::@5 @begin main::@14 @8 -main::@6 dominated by main main::@1 main::@5 main::@6 @begin main::@14 @8 -main::@28 dominated by main::@28 main main::@1 main::@5 main::@6 @begin main::@14 @8 -main::@7 dominated by main::@7 main::@28 main main::@1 main::@5 main::@6 @begin main::@14 @8 -main::@18 dominated by main::@7 main::@28 main main::@1 main::@5 main::@6 @begin main::@18 main::@14 @8 -main::@9 dominated by main::@9 main::@7 main::@28 main main::@1 main::@5 main::@6 @begin main::@14 @8 -main::@20 dominated by main::@9 main::@20 main::@7 main::@28 main main::@1 main::@5 main::@6 @begin main::@14 @8 -main::@21 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@5 main::@6 @begin main::@14 @8 -main::@10 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@5 main::@6 @begin main::@10 main::@14 @8 -main::@29 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@29 main::@1 main::@5 main::@6 @begin main::@10 main::@14 @8 -main::@22 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@5 main::@6 @begin main::@10 main::@14 @8 -main::@30 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@5 main::@6 main::@30 @begin main::@10 main::@14 @8 -main::@23 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@23 main::@1 main::@5 main::@6 main::@30 @begin main::@10 main::@14 @8 -main::@11 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@29 main::@1 main::@5 main::@6 main::@11 @begin main::@10 main::@14 @8 -main::@13 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@29 main::@1 main::@5 main::@6 main::@11 @begin main::@10 main::@13 main::@14 @8 -main::@8 dominated by main::@7 main::@8 main::@28 main main::@1 main::@5 main::@6 @begin main::@14 @8 -keyboard_key_pressed dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@5 main::@6 @begin main::@10 main::@14 keyboard_key_pressed @8 -keyboard_key_pressed::@2 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 keyboard_key_pressed::@2 main::@5 main::@6 @begin main::@10 main::@14 keyboard_key_pressed @8 -keyboard_key_pressed::@return dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 keyboard_key_pressed::@return main::@1 keyboard_key_pressed::@2 main::@5 main::@6 @begin main::@10 main::@14 keyboard_key_pressed @8 -keyboard_matrix_read dominated by keyboard_matrix_read main main::@1 main::@5 main::@6 @begin main::@14 @8 -keyboard_matrix_read::@return dominated by keyboard_matrix_read main main::@1 main::@5 main::@6 @begin keyboard_matrix_read::@return main::@14 @8 -keyboard_get_keycode dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@5 main::@6 keyboard_get_keycode @begin main::@10 main::@14 @8 -keyboard_get_keycode::@return dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@5 main::@6 keyboard_get_keycode @begin main::@10 main::@14 @8 keyboard_get_keycode::@return -keyboard_init dominated by main keyboard_init main::@1 @begin main::@14 @8 -keyboard_init::@return dominated by main keyboard_init main::@1 keyboard_init::@return @begin main::@14 @8 +@11 dominated by @11 @begin +@end dominated by @end @11 @begin +main dominated by main @11 @begin +main::@1 dominated by main main::@1 @11 @begin +main::@14 dominated by main main::@1 @11 @begin main::@14 +main::@5 dominated by main main::@1 main::@5 @11 @begin main::@14 +main::@6 dominated by main main::@1 main::@5 main::@6 @11 @begin main::@14 +main::@28 dominated by main::@28 main main::@1 main::@5 main::@6 @11 @begin main::@14 +main::@7 dominated by main::@7 main::@28 main main::@1 main::@5 main::@6 @11 @begin main::@14 +main::@18 dominated by main::@7 main::@28 main main::@1 main::@5 main::@6 @11 @begin main::@18 main::@14 +main::@9 dominated by main::@9 main::@7 main::@28 main main::@1 main::@5 main::@6 @11 @begin main::@14 +main::@20 dominated by main::@9 main::@20 main::@7 main::@28 main main::@1 main::@5 main::@6 @11 @begin main::@14 +main::@21 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@5 main::@6 @11 @begin main::@14 +main::@10 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@5 main::@6 @11 @begin main::@10 main::@14 +main::@29 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@29 main::@1 main::@5 main::@6 @11 @begin main::@10 main::@14 +main::@22 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@5 main::@6 @11 @begin main::@10 main::@14 +main::@30 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@5 main::@6 @11 main::@30 @begin main::@10 main::@14 +main::@23 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@23 main::@1 main::@5 main::@6 @11 main::@30 @begin main::@10 main::@14 +main::@11 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@29 main::@1 main::@5 main::@6 @11 main::@11 @begin main::@10 main::@14 +main::@13 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@29 main::@1 main::@5 main::@6 @11 main::@11 @begin main::@10 main::@13 main::@14 +main::@8 dominated by main::@7 main::@8 main::@28 main main::@1 main::@5 main::@6 @11 @begin main::@14 +keyboard_key_pressed dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@5 main::@6 @11 @begin main::@10 main::@14 keyboard_key_pressed +keyboard_key_pressed::@2 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 keyboard_key_pressed::@2 main::@5 main::@6 @11 @begin main::@10 main::@14 keyboard_key_pressed +keyboard_key_pressed::@return dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 keyboard_key_pressed::@return main::@1 keyboard_key_pressed::@2 main::@5 main::@6 @11 @begin main::@10 main::@14 keyboard_key_pressed +keyboard_matrix_read dominated by keyboard_matrix_read main main::@1 main::@5 main::@6 @11 @begin main::@14 +keyboard_matrix_read::@return dominated by keyboard_matrix_read main main::@1 main::@5 main::@6 @11 @begin keyboard_matrix_read::@return main::@14 +keyboard_get_keycode dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@5 main::@6 keyboard_get_keycode @11 @begin main::@10 main::@14 +keyboard_get_keycode::@return dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@5 main::@6 keyboard_get_keycode @11 @begin main::@10 main::@14 keyboard_get_keycode::@return +keyboard_init dominated by main keyboard_init main::@1 @11 @begin main::@14 +keyboard_init::@return dominated by main keyboard_init main::@1 keyboard_init::@return @11 @begin main::@14 NATURAL LOOPS Found back edge: Loop head: main::@1 tails: main::@1 blocks: null @@ -2665,17 +2769,17 @@ INITIAL ASM .const KEY_Q = $3e //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @8 [phi:@begin->@8] -b8_from_bbegin: - jmp b8 -//SEG4 @8 -b8: +//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] +b11_from_bbegin: + jmp b11 +//SEG4 @11 +b11: //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @8 to main [phi:@8->main] -main_from_b8: +//SEG6 [4] phi from @11 to main [phi:@11->main] +main_from_b11: jsr main -//SEG7 [3] phi from @8 to @end [phi:@8->@end] -bend_from_b8: +//SEG7 [3] phi from @11 to @end [phi:@11->@end] +bend_from_b11: jmp bend //SEG8 @end bend: @@ -3205,17 +3309,17 @@ ASSEMBLER BEFORE OPTIMIZATION .const KEY_Q = $3e //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @8 [phi:@begin->@8] -b8_from_bbegin: - jmp b8 -//SEG4 @8 -b8: +//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] +b11_from_bbegin: + jmp b11 +//SEG4 @11 +b11: //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @8 to main [phi:@8->main] -main_from_b8: +//SEG6 [4] phi from @11 to main [phi:@11->main] +main_from_b11: jsr main -//SEG7 [3] phi from @8 to @end [phi:@8->@end] -bend_from_b8: +//SEG7 [3] phi from @11 to @end [phi:@11->@end] +bend_from_b11: jmp bend //SEG8 @end bend: @@ -3541,7 +3645,7 @@ keyboard_init: { keyboard_char_keycodes: .byte KEY_AT, KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, $3f, KEY_POUND, $3f, KEY_ARROW_UP, KEY_ARROW_LEFT, KEY_SPACE, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, KEY_ASTERISK, KEY_PLUS, KEY_COMMA, KEY_MINUS, KEY_DOT, KEY_SLASH, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_COLON, KEY_SEMICOLON, $3f, KEY_EQUALS, $3f, $3f ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b8 +Removing instruction jmp b11 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp b14 @@ -3576,9 +3680,9 @@ Replacing label b11_from_b30 with b11 Replacing label b10_from_b11 with b10 Replacing label b13_from_b13 with b13 Removing instruction bbegin: -Removing instruction b8_from_bbegin: -Removing instruction main_from_b8: -Removing instruction bend_from_b8: +Removing instruction b11_from_bbegin: +Removing instruction main_from_b11: +Removing instruction bend_from_b11: Removing instruction b1_from_b1: Removing instruction b14_from_b1: Removing instruction b6_from_b20: @@ -3590,7 +3694,7 @@ Removing instruction b11_from_b30: Removing instruction b13_from_b11: Removing instruction b13_from_b13: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b8: +Removing instruction b11: Removing instruction bend: Removing instruction b1_from_main: Removing instruction b14: @@ -3620,7 +3724,7 @@ Removing instruction jmp b10 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @8 +(label) @11 (label) @begin (label) @end (byte*) CIA1_PORT_A @@ -3909,12 +4013,12 @@ Score: 56827 .const KEY_SPACE = $3c .const KEY_Q = $3e //SEG2 @begin -//SEG3 [1] phi from @begin to @8 [phi:@begin->@8] -//SEG4 @8 +//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] +//SEG4 @11 //SEG5 [2] call main [ ] ( ) -//SEG6 [4] phi from @8 to main [phi:@8->main] +//SEG6 [4] phi from @11 to main [phi:@11->main] jsr main -//SEG7 [3] phi from @8 to @end [phi:@8->@end] +//SEG7 [3] phi from @11 to @end [phi:@11->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.sym index 4be369626..ec45d5a66 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.sym @@ -1,4 +1,4 @@ -(label) @8 +(label) @11 (label) @begin (label) @end (byte*) CIA1_PORT_A