From 4bcef390f37547ce49ef46a26574bf28b32f3ec6 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Wed, 1 Nov 2017 14:10:49 +0100 Subject: [PATCH] Fixed bresenham line to do proper word-based addition. --- src/main/java/dk/camelot64/kickc/TODO.txt | 3 + .../fragment/asm/zpptrby1=coby1_sethi_aby.asm | 3 + .../fragment/asm/zpptrby1=coby1_sethi_xby.asm | 3 + .../fragment/asm/zpptrby1=coby1_sethi_yby.asm | 3 + .../asm/zpptrby1=coby1_sethi_zpby1.asm | 4 + .../asm/zpptrby1=zpptrby1_plus_zpptrby2.asm | 7 + .../asm/zpptrby1=zpptrby2_plus_zpptrby3.asm | 7 + .../camelot64/kickc/test/bitmap-bresenham.kc | 23 +- .../kickc/test/ref/bitmap-bresenham.asm | 43 +- .../kickc/test/ref/bitmap-bresenham.cfg | 105 +- .../kickc/test/ref/bitmap-bresenham.log | 3189 +++++++++-------- .../kickc/test/ref/bitmap-bresenham.sym | 34 +- 12 files changed, 1753 insertions(+), 1671 deletions(-) create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_aby.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_xby.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_yby.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_zpby1.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_plus_zpptrby2.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_plus_zpptrby3.asm diff --git a/src/main/java/dk/camelot64/kickc/TODO.txt b/src/main/java/dk/camelot64/kickc/TODO.txt index 94ab8c41a..76e72c1be 100644 --- a/src/main/java/dk/camelot64/kickc/TODO.txt +++ b/src/main/java/dk/camelot64/kickc/TODO.txt @@ -45,6 +45,9 @@ Arrays / Strings / Inline data - Add support for empty / filled byte data arrays. - Add support for expressions in data initializers. - Create a fill-like array initialization - byte[$100] plot_xlo = { [x] = x&$f8 }; +- Support word-arrays as two underlying byte-arrays in memory: word[$100] plot_x; -> ASM { plot_x_lo .fill $100,0 plot_x_hi .fill $100,0; } + - Support syntax for initializing the address of the two byte-arrays underlying a word array. word[] plot_x = { lo=$1000, hi=$1000 }; + - Support syntax for initializing the address of a byte-array. byte[] plot_x = { addr=$1000 }; -- current syntax as a short hand byte[] plot_x = $1000; - Inline ASM - Add support for inline asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_aby.asm new file mode 100644 index 000000000..f28330037 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_aby.asm @@ -0,0 +1,3 @@ +sta {zpptrby1}+1 +lda #<{coby1} +sta {zpptrby1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_xby.asm new file mode 100644 index 000000000..eabe69882 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_xby.asm @@ -0,0 +1,3 @@ +stx {zpptrby1}+1 +ldx #<{coby1} +stx {zpptrby1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_yby.asm new file mode 100644 index 000000000..083f61c66 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_yby.asm @@ -0,0 +1,3 @@ +sty {zpptrby1}+1 +ldy #<{coby1} +sty {zpptrby1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_zpby1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_zpby1.asm new file mode 100644 index 000000000..cd0a7337b --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_zpby1.asm @@ -0,0 +1,4 @@ +lda #<{coby1} +sta {zpptrby1} +lda {zpby1} +sta {zpptrby1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_plus_zpptrby2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_plus_zpptrby2.asm new file mode 100644 index 000000000..ac81ae3f0 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_plus_zpptrby2.asm @@ -0,0 +1,7 @@ +lda {zpptrby1} +clc +adc {zpptrby2} +sta {zpptrby1} +lda {zpptrby1}+1 +adc {zpptrby2}+1 +sta {zpptrby1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_plus_zpptrby3.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_plus_zpptrby3.asm new file mode 100644 index 000000000..e7f28d2ad --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_plus_zpptrby3.asm @@ -0,0 +1,7 @@ +lda {zpptrby2} +clc +adc {zpptrby3} +sta {zpptrby1} +lda {zpptrby2}+1 +adc {zpptrby3}+1 +sta {zpptrby1}+1 diff --git a/src/main/java/dk/camelot64/kickc/test/bitmap-bresenham.kc b/src/main/java/dk/camelot64/kickc/test/bitmap-bresenham.kc index a35594fbd..42ceadec6 100644 --- a/src/main/java/dk/camelot64/kickc/test/bitmap-bresenham.kc +++ b/src/main/java/dk/camelot64/kickc/test/bitmap-bresenham.kc @@ -31,9 +31,8 @@ void main() { *D018 = $18; // Needs casting for *D018 = ((word)SCREEN/$40)|((word)BITMAP/$400); initscreen(); initplottables(); - // TODO: Error with constant identification of the parameters! - line(0,0,20,10); - line(10,20,40,40); + line(0,0,200,100); + line(10,20,140,140); } void line(byte x0, byte y0, byte x1, byte y1) { @@ -44,7 +43,6 @@ void line(byte x0, byte y0, byte x1, byte y1) { byte e = yd>>1; do { plot(x,y); - // TODO: Ensure coalescing of plotter#0 and plotter#1 into a single live range equivalence class. x = x + 1; e = e+yd; if(xdplotter = plot_xhi[x]+plot_yhi[y]; - // TODO: plotter part. Requires new logic? - // TODO: New logic needed is 1) word-table lookup (split into two byte-tables) 2) word-addition 3) ALU-capable word-addition - + byte* plotter_x = 0; + byte* plotter_y = 0; + >plotter_x = plot_xhi[x]; // Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y]; + plotter_y = plot_yhi[y]; + BITMAP - sta plotter+1 lda plot_xhi,x - sta _3 + sta plotter_x+1 + lda #<0 + sta plotter_x + lda plot_xlo,x + sta plotter_x lda plot_yhi,y + sta plotter_y+1 + lda #<0 + sta plotter_y + lda plot_ylo,y + sta plotter_y + lda plotter clc - adc _3 + adc plotter_y + sta plotter + lda plotter+1 + adc plotter_y+1 sta plotter+1 ldy #0 lda (plotter),y - sta _6 + sta _5 lda plot_bit,x - ora _6 + ora _5 sta (plotter),y rts } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.cfg b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.cfg index 4a37b86e9..1fdcf4601 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.cfg @@ -25,9 +25,9 @@ main::@return: scope:[main] from main::@3 to:@return line: scope:[line] from main::@2 main::@3 [10] (byte) line::y#0 ← phi( main::@2/(byte) 0 main::@3/(byte) 20 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] - [10] (byte) line::y1#2 ← phi( main::@2/(byte) 10 main::@3/(byte) 40 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] + [10] (byte) line::y1#2 ← phi( main::@2/(byte) 100 main::@3/(byte) 140 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] [10] (byte) line::x#0 ← phi( main::@2/(byte) 0 main::@3/(byte) 10 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] - [10] (byte) line::x1#2 ← phi( main::@2/(byte) 20 main::@3/(byte) 40 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] + [10] (byte) line::x1#2 ← phi( main::@2/(byte) 200 main::@3/(byte) 140 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] [11] (byte) line::xd#0 ← (byte) line::x1#2 - (byte) line::x#0 [ line::x1#2 line::x#0 line::y1#2 line::y#0 line::xd#0 ] [12] (byte) line::yd#0 ← (byte) line::y1#2 - (byte) line::y#0 [ line::x1#2 line::x#0 line::y#0 line::xd#0 line::yd#0 ] [13] (byte) line::e#0 ← (byte) line::yd#0 >> (byte) 1 [ line::x1#2 line::x#0 line::y#0 line::xd#0 line::yd#0 line::e#0 ] @@ -59,80 +59,81 @@ line::@return: scope:[line] from line::@2 [26] return [ ] to:@return plot: scope:[plot] from line::@1 - [27] (byte~) plot::$0 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] - [28] (byte~) plot::$1 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::$0 plot::$1 ] - [29] (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::$2 ] - [30] (byte*) plot::plotter#1 ← (const byte*) BITMAP#0 lo= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter#1 ] - [31] (byte~) plot::$3 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter#1 plot::$3 ] - [32] (byte~) plot::$4 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter#1 plot::$3 plot::$4 ] - [33] (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 [ plot::x#0 plot::plotter#1 plot::$5 ] - [34] (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 [ plot::x#0 plot::plotter#2 ] - [35] (byte~) plot::$6 ← * (byte*) plot::plotter#2 [ plot::x#0 plot::plotter#2 plot::$6 ] - [36] (byte~) plot::$7 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#2 plot::$6 plot::$7 ] - [37] (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 [ plot::plotter#2 plot::$8 ] - [38] *((byte*) plot::plotter#2) ← (byte~) plot::$8 [ ] + [27] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] + [28] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] + [29] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] + [30] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] + [31] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] + [32] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] + [33] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] + [34] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] + [35] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] + [36] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#0 plot::plotter#0 plot::$5 ] + [37] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 plot::$6 ] + [38] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ] + [39] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ] to:plot::@return plot::@return: scope:[plot] from plot - [39] return [ ] + [40] return [ ] to:@return initplottables: scope:[initplottables] from main::@1 - [40] phi() [ ] + [41] phi() [ ] to:initplottables::@1 initplottables::@1: scope:[initplottables] from initplottables initplottables::@2 - [41] (byte) initplottables::bit#3 ← phi( initplottables/(byte) 128 initplottables::@2/(byte) initplottables::bit#4 ) [ initplottables::x#2 initplottables::bit#3 ] - [41] (byte) initplottables::x#2 ← phi( initplottables/(byte) 0 initplottables::@2/(byte) initplottables::x#1 ) [ initplottables::x#2 initplottables::bit#3 ] - [42] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] - [43] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] - [44] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] - [45] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] - [46] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] - [47] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] + [42] (byte) initplottables::bit#3 ← phi( initplottables/(byte) 128 initplottables::@2/(byte) initplottables::bit#4 ) [ initplottables::x#2 initplottables::bit#3 ] + [42] (byte) initplottables::x#2 ← phi( initplottables/(byte) 0 initplottables::@2/(byte) initplottables::x#1 ) [ initplottables::x#2 initplottables::bit#3 ] + [43] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] + [44] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] + [45] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] + [46] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] + [47] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] + [48] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] to:initplottables::@2 initplottables::@2: scope:[initplottables] from initplottables::@1 initplottables::@10 - [48] (byte) initplottables::bit#4 ← phi( initplottables::@10/(byte) initplottables::bit#1 initplottables::@1/(byte) 128 ) [ initplottables::x#2 initplottables::bit#4 ] - [49] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] - [50] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] + [49] (byte) initplottables::bit#4 ← phi( initplottables::@10/(byte) initplottables::bit#1 initplottables::@1/(byte) 128 ) [ initplottables::x#2 initplottables::bit#4 ] + [50] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] + [51] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] to:initplottables::@3 initplottables::@3: scope:[initplottables] from initplottables::@2 initplottables::@4 - [51] (byte*) initplottables::yoffs#2 ← phi( initplottables::@4/(byte*) initplottables::yoffs#4 initplottables::@2/(byte) 0 ) [ initplottables::y#2 initplottables::yoffs#2 ] - [51] (byte) initplottables::y#2 ← phi( initplottables::@4/(byte) initplottables::y#1 initplottables::@2/(byte) 0 ) [ initplottables::y#2 initplottables::yoffs#2 ] - [52] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] - [53] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] - [54] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] - [55] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] - [56] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] - [57] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] - [58] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] - [59] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] + [52] (byte*) initplottables::yoffs#2 ← phi( initplottables::@4/(byte*) initplottables::yoffs#4 initplottables::@2/(byte) 0 ) [ initplottables::y#2 initplottables::yoffs#2 ] + [52] (byte) initplottables::y#2 ← phi( initplottables::@4/(byte) initplottables::y#1 initplottables::@2/(byte) 0 ) [ initplottables::y#2 initplottables::yoffs#2 ] + [53] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] + [54] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] + [55] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] + [56] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] + [57] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] + [58] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] + [59] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] + [60] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] to:initplottables::@7 initplottables::@7: scope:[initplottables] from initplottables::@3 - [60] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] + [61] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] to:initplottables::@4 initplottables::@4: scope:[initplottables] from initplottables::@3 initplottables::@7 - [61] (byte*) initplottables::yoffs#4 ← phi( initplottables::@3/(byte*) initplottables::yoffs#2 initplottables::@7/(byte*) initplottables::yoffs#1 ) [ initplottables::y#2 initplottables::yoffs#4 ] - [62] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] - [63] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] + [62] (byte*) initplottables::yoffs#4 ← phi( initplottables::@3/(byte*) initplottables::yoffs#2 initplottables::@7/(byte*) initplottables::yoffs#1 ) [ initplottables::y#2 initplottables::yoffs#4 ] + [63] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] + [64] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] to:initplottables::@return initplottables::@return: scope:[initplottables] from initplottables::@4 - [64] return [ ] + [65] return [ ] to:@return initplottables::@10: scope:[initplottables] from initplottables::@1 to:initplottables::@2 initscreen: scope:[initscreen] from main - [65] phi() [ ] + [66] phi() [ ] to:initscreen::@1 initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 - [66] (byte*) initscreen::b#2 ← phi( initscreen/(const byte*) BITMAP#0 initscreen::@1/(byte*) initscreen::b#1 ) [ initscreen::b#2 ] - [67] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] - [68] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] - [69] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] + [67] (byte*) initscreen::b#2 ← phi( initscreen/(const byte*) BITMAP#0 initscreen::@1/(byte*) initscreen::b#1 ) [ initscreen::b#2 ] + [68] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] + [69] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] + [70] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] to:initscreen::@2 initscreen::@2: scope:[initscreen] from initscreen::@1 initscreen::@2 - [70] (byte*) initscreen::c#2 ← phi( initscreen::@2/(byte*) initscreen::c#1 initscreen::@1/(const byte*) SCREEN#0 ) [ initscreen::c#2 ] - [71] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] - [72] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] - [73] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] + [71] (byte*) initscreen::c#2 ← phi( initscreen::@2/(byte*) initscreen::c#1 initscreen::@1/(const byte*) SCREEN#0 ) [ initscreen::c#2 ] + [72] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] + [73] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] + [74] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@2 - [74] return [ ] + [75] return [ ] to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log index 6f7454d06..b1b7b7801 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log @@ -31,9 +31,8 @@ void main() { *D018 = $18; // Needs casting for *D018 = ((word)SCREEN/$40)|((word)BITMAP/$400); initscreen(); initplottables(); - // TODO: Error with constant identification of the parameters! - line(0,0,20,10); - line(10,20,40,40); + line(0,0,200,100); + line(10,20,140,140); } void line(byte x0, byte y0, byte x1, byte y1) { @@ -44,7 +43,6 @@ void line(byte x0, byte y0, byte x1, byte y1) { byte e = yd>>1; do { plot(x,y); - // TODO: Ensure coalescing of plotter#0 and plotter#1 into a single live range equivalence class. x = x + 1; e = e+yd; if(xdplotter = plot_xhi[x]+plot_yhi[y]; - // TODO: plotter part. Requires new logic? - // TODO: New logic needed is 1) word-table lookup (split into two byte-tables) 2) word-addition 3) ALU-capable word-addition - + byte* plotter_x = 0; + byte* plotter_y = 0; + >plotter_x = plot_xhi[x]; // Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y]; + plotter_y = plot_yhi[y]; + (byte*) BITMAP#13 + (byte~) initplottables::$1 ← > (byte*) BITMAP#3 *((byte[]) plot_xhi#1 + (byte) initplottables::x#2) ← (byte~) initplottables::$1 *((byte[]) plot_bit#1 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 @@ -2912,7 +2895,7 @@ initplottables::@2: scope:[initplottables] from initplottables::@1 initplottabl (byte[]) plot_bit#4 ← phi( initplottables::@1/(byte[]) plot_bit#1 initplottables::@5/(byte[]) plot_bit#1 ) (byte) initplottables::bit#4 ← phi( initplottables::@1/(byte) initplottables::bit#1 initplottables::@5/(byte) initplottables::bit#2 ) (byte[]) plot_xhi#4 ← phi( initplottables::@1/(byte[]) plot_xhi#1 initplottables::@5/(byte[]) plot_xhi#1 ) - (byte*) BITMAP#7 ← phi( initplottables::@1/(byte*) BITMAP#13 initplottables::@5/(byte*) BITMAP#13 ) + (byte*) BITMAP#6 ← phi( initplottables::@1/(byte*) BITMAP#3 initplottables::@5/(byte*) BITMAP#3 ) (byte[]) plot_xlo#4 ← phi( initplottables::@1/(byte[]) plot_xlo#1 initplottables::@5/(byte[]) plot_xlo#1 ) (byte) initplottables::x#3 ← phi( initplottables::@1/(byte) initplottables::x#2 initplottables::@5/(byte) initplottables::x#2 ) (byte) initplottables::x#1 ← ++ (byte) initplottables::x#3 @@ -2957,19 +2940,21 @@ initplottables::@return: scope:[initplottables] from initplottables::@4 return to:@return plot: scope:[plot] from line::@1 - (byte*) plot::plotter#0 ← (byte*) BITMAP#16 - (byte~) plot::$0 ← (byte[]) plot_xlo#13 *idx (byte) plot::x#0 - (byte~) plot::$1 ← (byte[]) plot_ylo#12 *idx (byte) plot::y#0 - (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 - (byte*) plot::plotter#1 ← (byte*) plot::plotter#0 lo= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_xhi#13 *idx (byte) plot::x#0 - (byte~) plot::$4 ← (byte[]) plot_yhi#12 *idx (byte) plot::y#0 - (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 - (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 - (byte~) plot::$6 ← * (byte*) plot::plotter#2 - (byte~) plot::$7 ← (byte[]) plot_bit#13 *idx (byte) plot::x#0 - (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 - *((byte*) plot::plotter#2) ← (byte~) plot::$8 + (byte*) plot::plotter_x#0 ← (byte) 0 + (byte*) plot::plotter_y#0 ← (byte) 0 + (byte~) plot::$0 ← (byte[]) plot_xhi#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 + (byte~) plot::$1 ← (byte[]) plot_xlo#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 + (byte~) plot::$2 ← (byte[]) plot_yhi#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (byte~) plot::$3 ← (byte[]) plot_ylo#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (byte~) plot::$5 ← * (byte*) plot::plotter#0 + (byte~) plot::$6 ← (byte[]) plot_bit#13 *idx (byte) plot::x#0 + (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 + *((byte*) plot::plotter#0) ← (byte~) plot::$7 to:plot::@return plot::@return: scope:[plot] from plot return @@ -2983,26 +2968,23 @@ Not aliassing across scopes: plot::x#0 line::x#2 Not aliassing across scopes: plot::y#0 line::y#2 Not aliassing across scopes: initscreen::b#0 BITMAP#0 Not aliassing across scopes: initscreen::c#0 SCREEN#1 -Not aliassing across scopes: plot::plotter#0 BITMAP#16 -Redundant Phi (byte*) BITMAP#10 (byte*) BITMAP#0 -Redundant Phi (byte[]) plot_xlo#6 (byte[]) plot_xlo#0 -Redundant Phi (byte[]) plot_ylo#6 (byte[]) plot_ylo#0 Redundant Phi (byte[]) plot_xhi#6 (byte[]) plot_xhi#0 +Redundant Phi (byte[]) plot_xlo#6 (byte[]) plot_xlo#0 Redundant Phi (byte[]) plot_yhi#6 (byte[]) plot_yhi#0 +Redundant Phi (byte[]) plot_ylo#6 (byte[]) plot_ylo#0 Redundant Phi (byte[]) plot_bit#6 (byte[]) plot_bit#0 Redundant Phi (byte) line::x1#3 (byte) line::x1#4 Redundant Phi (byte) line::x#4 (byte) line::x#1 Redundant Phi (byte) line::yd#3 (byte) line::yd#1 Redundant Phi (byte) line::xd#4 (byte) line::xd#1 -Redundant Phi (byte*) BITMAP#11 (byte*) BITMAP#16 -Redundant Phi (byte[]) plot_xlo#7 (byte[]) plot_xlo#13 -Redundant Phi (byte[]) plot_ylo#7 (byte[]) plot_ylo#12 Redundant Phi (byte[]) plot_xhi#7 (byte[]) plot_xhi#13 +Redundant Phi (byte[]) plot_xlo#7 (byte[]) plot_xlo#13 Redundant Phi (byte[]) plot_yhi#7 (byte[]) plot_yhi#12 +Redundant Phi (byte[]) plot_ylo#7 (byte[]) plot_ylo#12 Redundant Phi (byte[]) plot_bit#7 (byte[]) plot_bit#13 Redundant Phi (byte) initplottables::x#3 (byte) initplottables::x#2 Redundant Phi (byte[]) plot_xlo#4 (byte[]) plot_xlo#1 -Redundant Phi (byte*) BITMAP#7 (byte*) BITMAP#13 +Redundant Phi (byte*) BITMAP#6 (byte*) BITMAP#3 Redundant Phi (byte[]) plot_xhi#4 (byte[]) plot_xhi#1 Redundant Phi (byte[]) plot_bit#4 (byte[]) plot_bit#1 Redundant Phi (byte[]) plot_ylo#4 (byte[]) plot_ylo#14 @@ -3051,15 +3033,15 @@ main::@1: scope:[main] from main main::@2: scope:[main] from main::@1 (byte) line::x0#0 ← (byte) 0 (byte) line::y0#0 ← (byte) 0 - (byte) line::x1#0 ← (byte) 20 - (byte) line::y1#0 ← (byte) 10 + (byte) line::x1#0 ← (byte) 200 + (byte) line::y1#0 ← (byte) 100 call line param-assignment to:main::@3 main::@3: scope:[main] from main::@2 (byte) line::x0#1 ← (byte) 10 (byte) line::y0#1 ← (byte) 20 - (byte) line::x1#1 ← (byte) 40 - (byte) line::y1#1 ← (byte) 40 + (byte) line::x1#1 ← (byte) 140 + (byte) line::y1#1 ← (byte) 140 call line param-assignment to:main::@return main::@return: scope:[main] from main::@3 @@ -3077,11 +3059,10 @@ line: scope:[line] from main::@2 main::@3 line::@1: scope:[line] from line line::@2 (byte) line::x1#4 ← phi( line/(byte) line::x1#2 line::@2/(byte) line::x1#4 ) (byte[]) plot_bit#13 ← phi( line/(byte[]) plot_bit#0 line::@2/(byte[]) plot_bit#13 ) - (byte[]) plot_yhi#12 ← phi( line/(byte[]) plot_yhi#0 line::@2/(byte[]) plot_yhi#12 ) - (byte[]) plot_xhi#13 ← phi( line/(byte[]) plot_xhi#0 line::@2/(byte[]) plot_xhi#13 ) (byte[]) plot_ylo#12 ← phi( line/(byte[]) plot_ylo#0 line::@2/(byte[]) plot_ylo#12 ) + (byte[]) plot_yhi#12 ← phi( line/(byte[]) plot_yhi#0 line::@2/(byte[]) plot_yhi#12 ) (byte[]) plot_xlo#13 ← phi( line/(byte[]) plot_xlo#0 line::@2/(byte[]) plot_xlo#13 ) - (byte*) BITMAP#16 ← phi( line/(byte*) BITMAP#0 line::@2/(byte*) BITMAP#16 ) + (byte[]) plot_xhi#13 ← phi( line/(byte[]) plot_xhi#0 line::@2/(byte[]) plot_xhi#13 ) (byte) line::xd#1 ← phi( line/(byte) line::xd#0 line::@2/(byte) line::xd#1 ) (byte) line::yd#1 ← phi( line/(byte) line::yd#0 line::@2/(byte) line::yd#1 ) (byte) line::e#3 ← phi( line/(byte) line::e#0 line::@2/(byte) line::e#6 ) @@ -3149,12 +3130,12 @@ initplottables::@1: scope:[initplottables] from initplottables initplottables:: (byte[]) plot_bit#1 ← phi( initplottables/(byte[]) plot_bit#0 initplottables::@2/(byte[]) plot_bit#1 ) (byte) initplottables::bit#3 ← phi( initplottables/(byte) initplottables::bit#0 initplottables::@2/(byte) initplottables::bit#4 ) (byte[]) plot_xhi#1 ← phi( initplottables/(byte[]) plot_xhi#0 initplottables::@2/(byte[]) plot_xhi#1 ) - (byte*) BITMAP#13 ← phi( initplottables/(byte*) BITMAP#0 initplottables::@2/(byte*) BITMAP#13 ) + (byte*) BITMAP#3 ← phi( initplottables/(byte*) BITMAP#0 initplottables::@2/(byte*) BITMAP#3 ) (byte[]) plot_xlo#1 ← phi( initplottables/(byte[]) plot_xlo#0 initplottables::@2/(byte[]) plot_xlo#1 ) (byte) initplottables::x#2 ← phi( initplottables/(byte) initplottables::x#0 initplottables::@2/(byte) initplottables::x#1 ) (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 *((byte[]) plot_xlo#1 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 - (byte~) initplottables::$1 ← > (byte*) BITMAP#13 + (byte~) initplottables::$1 ← > (byte*) BITMAP#3 *((byte[]) plot_xhi#1 + (byte) initplottables::x#2) ← (byte~) initplottables::$1 *((byte[]) plot_bit#1 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 @@ -3202,19 +3183,21 @@ initplottables::@return: scope:[initplottables] from initplottables::@4 return to:@return plot: scope:[plot] from line::@1 - (byte*) plot::plotter#0 ← (byte*) BITMAP#16 - (byte~) plot::$0 ← (byte[]) plot_xlo#13 *idx (byte) plot::x#0 - (byte~) plot::$1 ← (byte[]) plot_ylo#12 *idx (byte) plot::y#0 - (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 - (byte*) plot::plotter#1 ← (byte*) plot::plotter#0 lo= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_xhi#13 *idx (byte) plot::x#0 - (byte~) plot::$4 ← (byte[]) plot_yhi#12 *idx (byte) plot::y#0 - (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 - (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 - (byte~) plot::$6 ← * (byte*) plot::plotter#2 - (byte~) plot::$7 ← (byte[]) plot_bit#13 *idx (byte) plot::x#0 - (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 - *((byte*) plot::plotter#2) ← (byte~) plot::$8 + (byte*) plot::plotter_x#0 ← (byte) 0 + (byte*) plot::plotter_y#0 ← (byte) 0 + (byte~) plot::$0 ← (byte[]) plot_xhi#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 + (byte~) plot::$1 ← (byte[]) plot_xlo#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 + (byte~) plot::$2 ← (byte[]) plot_yhi#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (byte~) plot::$3 ← (byte[]) plot_ylo#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (byte~) plot::$5 ← * (byte*) plot::plotter#0 + (byte~) plot::$6 ← (byte[]) plot_bit#13 *idx (byte) plot::x#0 + (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 + *((byte*) plot::plotter#0) ← (byte~) plot::$7 to:plot::@return plot::@return: scope:[plot] from plot return @@ -3226,18 +3209,17 @@ plot::@return: scope:[plot] from plot Self Phi Eliminated (byte) line::yd#1 Self Phi Eliminated (byte) line::xd#1 -Self Phi Eliminated (byte*) BITMAP#16 -Self Phi Eliminated (byte[]) plot_xlo#13 -Self Phi Eliminated (byte[]) plot_ylo#12 Self Phi Eliminated (byte[]) plot_xhi#13 +Self Phi Eliminated (byte[]) plot_xlo#13 Self Phi Eliminated (byte[]) plot_yhi#12 +Self Phi Eliminated (byte[]) plot_ylo#12 Self Phi Eliminated (byte[]) plot_bit#13 Self Phi Eliminated (byte) line::x1#4 Self Phi Eliminated (byte*) BITMAP#2 Self Phi Eliminated (byte*) SCREEN#1 Self Phi Eliminated (byte*) SCREEN#2 Self Phi Eliminated (byte[]) plot_xlo#1 -Self Phi Eliminated (byte*) BITMAP#13 +Self Phi Eliminated (byte*) BITMAP#3 Self Phi Eliminated (byte[]) plot_xhi#1 Self Phi Eliminated (byte[]) plot_bit#1 Self Phi Eliminated (byte[]) plot_ylo#14 @@ -3285,15 +3267,15 @@ main::@1: scope:[main] from main main::@2: scope:[main] from main::@1 (byte) line::x0#0 ← (byte) 0 (byte) line::y0#0 ← (byte) 0 - (byte) line::x1#0 ← (byte) 20 - (byte) line::y1#0 ← (byte) 10 + (byte) line::x1#0 ← (byte) 200 + (byte) line::y1#0 ← (byte) 100 call line param-assignment to:main::@3 main::@3: scope:[main] from main::@2 (byte) line::x0#1 ← (byte) 10 (byte) line::y0#1 ← (byte) 20 - (byte) line::x1#1 ← (byte) 40 - (byte) line::y1#1 ← (byte) 40 + (byte) line::x1#1 ← (byte) 140 + (byte) line::y1#1 ← (byte) 140 call line param-assignment to:main::@return main::@return: scope:[main] from main::@3 @@ -3311,11 +3293,10 @@ line: scope:[line] from main::@2 main::@3 line::@1: scope:[line] from line line::@2 (byte) line::x1#4 ← phi( line/(byte) line::x1#2 ) (byte[]) plot_bit#13 ← phi( line/(byte[]) plot_bit#0 ) - (byte[]) plot_yhi#12 ← phi( line/(byte[]) plot_yhi#0 ) - (byte[]) plot_xhi#13 ← phi( line/(byte[]) plot_xhi#0 ) (byte[]) plot_ylo#12 ← phi( line/(byte[]) plot_ylo#0 ) + (byte[]) plot_yhi#12 ← phi( line/(byte[]) plot_yhi#0 ) (byte[]) plot_xlo#13 ← phi( line/(byte[]) plot_xlo#0 ) - (byte*) BITMAP#16 ← phi( line/(byte*) BITMAP#0 ) + (byte[]) plot_xhi#13 ← phi( line/(byte[]) plot_xhi#0 ) (byte) line::xd#1 ← phi( line/(byte) line::xd#0 ) (byte) line::yd#1 ← phi( line/(byte) line::yd#0 ) (byte) line::e#3 ← phi( line/(byte) line::e#0 line::@2/(byte) line::e#6 ) @@ -3383,12 +3364,12 @@ initplottables::@1: scope:[initplottables] from initplottables initplottables:: (byte[]) plot_bit#1 ← phi( initplottables/(byte[]) plot_bit#0 ) (byte) initplottables::bit#3 ← phi( initplottables/(byte) initplottables::bit#0 initplottables::@2/(byte) initplottables::bit#4 ) (byte[]) plot_xhi#1 ← phi( initplottables/(byte[]) plot_xhi#0 ) - (byte*) BITMAP#13 ← phi( initplottables/(byte*) BITMAP#0 ) + (byte*) BITMAP#3 ← phi( initplottables/(byte*) BITMAP#0 ) (byte[]) plot_xlo#1 ← phi( initplottables/(byte[]) plot_xlo#0 ) (byte) initplottables::x#2 ← phi( initplottables/(byte) initplottables::x#0 initplottables::@2/(byte) initplottables::x#1 ) (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 *((byte[]) plot_xlo#1 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 - (byte~) initplottables::$1 ← > (byte*) BITMAP#13 + (byte~) initplottables::$1 ← > (byte*) BITMAP#3 *((byte[]) plot_xhi#1 + (byte) initplottables::x#2) ← (byte~) initplottables::$1 *((byte[]) plot_bit#1 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 @@ -3436,19 +3417,21 @@ initplottables::@return: scope:[initplottables] from initplottables::@4 return to:@return plot: scope:[plot] from line::@1 - (byte*) plot::plotter#0 ← (byte*) BITMAP#16 - (byte~) plot::$0 ← (byte[]) plot_xlo#13 *idx (byte) plot::x#0 - (byte~) plot::$1 ← (byte[]) plot_ylo#12 *idx (byte) plot::y#0 - (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 - (byte*) plot::plotter#1 ← (byte*) plot::plotter#0 lo= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_xhi#13 *idx (byte) plot::x#0 - (byte~) plot::$4 ← (byte[]) plot_yhi#12 *idx (byte) plot::y#0 - (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 - (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 - (byte~) plot::$6 ← * (byte*) plot::plotter#2 - (byte~) plot::$7 ← (byte[]) plot_bit#13 *idx (byte) plot::x#0 - (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 - *((byte*) plot::plotter#2) ← (byte~) plot::$8 + (byte*) plot::plotter_x#0 ← (byte) 0 + (byte*) plot::plotter_y#0 ← (byte) 0 + (byte~) plot::$0 ← (byte[]) plot_xhi#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 + (byte~) plot::$1 ← (byte[]) plot_xlo#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 + (byte~) plot::$2 ← (byte[]) plot_yhi#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (byte~) plot::$3 ← (byte[]) plot_ylo#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (byte~) plot::$5 ← * (byte*) plot::plotter#0 + (byte~) plot::$6 ← (byte[]) plot_bit#13 *idx (byte) plot::x#0 + (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 + *((byte*) plot::plotter#0) ← (byte~) plot::$7 to:plot::@return plot::@return: scope:[plot] from plot return @@ -3507,15 +3490,15 @@ main::@1: scope:[main] from main main::@2: scope:[main] from main::@1 (byte) line::x0#0 ← (byte) 0 (byte) line::y0#0 ← (byte) 0 - (byte) line::x1#0 ← (byte) 20 - (byte) line::y1#0 ← (byte) 10 + (byte) line::x1#0 ← (byte) 200 + (byte) line::y1#0 ← (byte) 100 call line param-assignment to:main::@3 main::@3: scope:[main] from main::@2 (byte) line::x0#1 ← (byte) 10 (byte) line::y0#1 ← (byte) 20 - (byte) line::x1#1 ← (byte) 40 - (byte) line::y1#1 ← (byte) 40 + (byte) line::x1#1 ← (byte) 140 + (byte) line::y1#1 ← (byte) 140 call line param-assignment to:main::@return main::@return: scope:[main] from main::@3 @@ -3533,11 +3516,10 @@ line: scope:[line] from main::@2 main::@3 line::@1: scope:[line] from line line::@2 (byte) line::x1#4 ← phi( line/(byte) line::x1#2 ) (byte[]) plot_bit#13 ← phi( line/(byte[]) plot_bit#0 ) - (byte[]) plot_yhi#12 ← phi( line/(byte[]) plot_yhi#0 ) - (byte[]) plot_xhi#13 ← phi( line/(byte[]) plot_xhi#0 ) (byte[]) plot_ylo#12 ← phi( line/(byte[]) plot_ylo#0 ) + (byte[]) plot_yhi#12 ← phi( line/(byte[]) plot_yhi#0 ) (byte[]) plot_xlo#13 ← phi( line/(byte[]) plot_xlo#0 ) - (byte*) BITMAP#16 ← phi( line/(byte*) BITMAP#0 ) + (byte[]) plot_xhi#13 ← phi( line/(byte[]) plot_xhi#0 ) (byte) line::xd#1 ← phi( line/(byte) line::xd#0 ) (byte) line::yd#1 ← phi( line/(byte) line::yd#0 ) (byte) line::e#3 ← phi( line/(byte) line::e#0 line::@2/(byte) line::e#6 ) @@ -3601,12 +3583,12 @@ initplottables::@1: scope:[initplottables] from initplottables initplottables:: (byte[]) plot_bit#1 ← phi( initplottables/(byte[]) plot_bit#0 ) (byte) initplottables::bit#3 ← phi( initplottables/(byte) initplottables::bit#0 initplottables::@2/(byte) initplottables::bit#4 ) (byte[]) plot_xhi#1 ← phi( initplottables/(byte[]) plot_xhi#0 ) - (byte*) BITMAP#13 ← phi( initplottables/(byte*) BITMAP#0 ) + (byte*) BITMAP#3 ← phi( initplottables/(byte*) BITMAP#0 ) (byte[]) plot_xlo#1 ← phi( initplottables/(byte[]) plot_xlo#0 ) (byte) initplottables::x#2 ← phi( initplottables/(byte) initplottables::x#0 initplottables::@2/(byte) initplottables::x#1 ) (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 *((byte[]) plot_xlo#1 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 - (byte~) initplottables::$1 ← > (byte*) BITMAP#13 + (byte~) initplottables::$1 ← > (byte*) BITMAP#3 *((byte[]) plot_xhi#1 + (byte) initplottables::x#2) ← (byte~) initplottables::$1 *((byte[]) plot_bit#1 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 @@ -3650,19 +3632,21 @@ initplottables::@return: scope:[initplottables] from initplottables::@4 return to:@return plot: scope:[plot] from line::@1 - (byte*) plot::plotter#0 ← (byte*) BITMAP#16 - (byte~) plot::$0 ← (byte[]) plot_xlo#13 *idx (byte) plot::x#0 - (byte~) plot::$1 ← (byte[]) plot_ylo#12 *idx (byte) plot::y#0 - (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 - (byte*) plot::plotter#1 ← (byte*) plot::plotter#0 lo= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_xhi#13 *idx (byte) plot::x#0 - (byte~) plot::$4 ← (byte[]) plot_yhi#12 *idx (byte) plot::y#0 - (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 - (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 - (byte~) plot::$6 ← * (byte*) plot::plotter#2 - (byte~) plot::$7 ← (byte[]) plot_bit#13 *idx (byte) plot::x#0 - (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 - *((byte*) plot::plotter#2) ← (byte~) plot::$8 + (byte*) plot::plotter_x#0 ← (byte) 0 + (byte*) plot::plotter_y#0 ← (byte) 0 + (byte~) plot::$0 ← (byte[]) plot_xhi#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 + (byte~) plot::$1 ← (byte[]) plot_xlo#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 + (byte~) plot::$2 ← (byte[]) plot_yhi#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (byte~) plot::$3 ← (byte[]) plot_ylo#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (byte~) plot::$5 ← * (byte*) plot::plotter#0 + (byte~) plot::$6 ← (byte[]) plot_bit#13 *idx (byte) plot::x#0 + (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 + *((byte*) plot::plotter#0) ← (byte~) plot::$7 to:plot::@return plot::@return: scope:[plot] from plot return @@ -3695,17 +3679,19 @@ Constant (const byte[]) plot_yhi#0 = 4864 Constant (const byte[]) plot_bit#0 = 5120 Constant (const byte) line::x0#0 = 0 Constant (const byte) line::y0#0 = 0 -Constant (const byte) line::x1#0 = 20 -Constant (const byte) line::y1#0 = 10 +Constant (const byte) line::x1#0 = 200 +Constant (const byte) line::y1#0 = 100 Constant (const byte) line::x0#1 = 10 Constant (const byte) line::y0#1 = 20 -Constant (const byte) line::x1#1 = 40 -Constant (const byte) line::y1#1 = 40 +Constant (const byte) line::x1#1 = 140 +Constant (const byte) line::y1#1 = 140 Constant (const byte) initplottables::bit#0 = 128 Constant (const byte) initplottables::x#0 = 0 Constant (const byte) initplottables::bit#2 = 128 Constant (const byte*) initplottables::yoffs#0 = 0 Constant (const byte) initplottables::y#0 = 0 +Constant (const byte*) plot::plotter_x#0 = 0 +Constant (const byte*) plot::plotter_y#0 = 0 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -3744,11 +3730,10 @@ line: scope:[line] from main::@2 main::@3 line::@1: scope:[line] from line line::@2 (byte) line::x1#4 ← phi( line/(byte) line::x1#2 ) (byte[]) plot_bit#13 ← phi( line/(const byte[]) plot_bit#0 ) - (byte[]) plot_yhi#12 ← phi( line/(const byte[]) plot_yhi#0 ) - (byte[]) plot_xhi#13 ← phi( line/(const byte[]) plot_xhi#0 ) (byte[]) plot_ylo#12 ← phi( line/(const byte[]) plot_ylo#0 ) + (byte[]) plot_yhi#12 ← phi( line/(const byte[]) plot_yhi#0 ) (byte[]) plot_xlo#13 ← phi( line/(const byte[]) plot_xlo#0 ) - (byte*) BITMAP#16 ← phi( line/(const byte*) BITMAP#0 ) + (byte[]) plot_xhi#13 ← phi( line/(const byte[]) plot_xhi#0 ) (byte) line::xd#1 ← phi( line/(byte) line::xd#0 ) (byte) line::yd#1 ← phi( line/(byte) line::yd#0 ) (byte) line::e#3 ← phi( line/(byte) line::e#0 line::@2/(byte) line::e#6 ) @@ -3810,12 +3795,12 @@ initplottables::@1: scope:[initplottables] from initplottables initplottables:: (byte[]) plot_bit#1 ← phi( initplottables/(const byte[]) plot_bit#0 ) (byte) initplottables::bit#3 ← phi( initplottables/(const byte) initplottables::bit#0 initplottables::@2/(byte) initplottables::bit#4 ) (byte[]) plot_xhi#1 ← phi( initplottables/(const byte[]) plot_xhi#0 ) - (byte*) BITMAP#13 ← phi( initplottables/(const byte*) BITMAP#0 ) + (byte*) BITMAP#3 ← phi( initplottables/(const byte*) BITMAP#0 ) (byte[]) plot_xlo#1 ← phi( initplottables/(const byte[]) plot_xlo#0 ) (byte) initplottables::x#2 ← phi( initplottables/(const byte) initplottables::x#0 initplottables::@2/(byte) initplottables::x#1 ) (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 *((byte[]) plot_xlo#1 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 - (byte~) initplottables::$1 ← > (byte*) BITMAP#13 + (byte~) initplottables::$1 ← > (byte*) BITMAP#3 *((byte[]) plot_xhi#1 + (byte) initplottables::x#2) ← (byte~) initplottables::$1 *((byte[]) plot_bit#1 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 @@ -3856,19 +3841,19 @@ initplottables::@return: scope:[initplottables] from initplottables::@4 return to:@return plot: scope:[plot] from line::@1 - (byte*) plot::plotter#0 ← (byte*) BITMAP#16 - (byte~) plot::$0 ← (byte[]) plot_xlo#13 *idx (byte) plot::x#0 - (byte~) plot::$1 ← (byte[]) plot_ylo#12 *idx (byte) plot::y#0 - (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 - (byte*) plot::plotter#1 ← (byte*) plot::plotter#0 lo= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_xhi#13 *idx (byte) plot::x#0 - (byte~) plot::$4 ← (byte[]) plot_yhi#12 *idx (byte) plot::y#0 - (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 - (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 - (byte~) plot::$6 ← * (byte*) plot::plotter#2 - (byte~) plot::$7 ← (byte[]) plot_bit#13 *idx (byte) plot::x#0 - (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 - *((byte*) plot::plotter#2) ← (byte~) plot::$8 + (byte~) plot::$0 ← (byte[]) plot_xhi#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$0 + (byte~) plot::$1 ← (byte[]) plot_xlo#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 + (byte~) plot::$2 ← (byte[]) plot_yhi#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (byte~) plot::$3 ← (byte[]) plot_ylo#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (byte~) plot::$5 ← * (byte*) plot::plotter#0 + (byte~) plot::$6 ← (byte[]) plot_bit#13 *idx (byte) plot::x#0 + (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 + *((byte*) plot::plotter#0) ← (byte~) plot::$7 to:plot::@return plot::@return: scope:[plot] from plot return @@ -3879,17 +3864,16 @@ plot::@return: scope:[plot] from plot @end: scope:[] from @5 Constant (const byte) main::$0 = BMM#0|DEN#0 -Constant (const byte*) BITMAP#16 = BITMAP#0 -Constant (const byte[]) plot_xlo#13 = plot_xlo#0 -Constant (const byte[]) plot_ylo#12 = plot_ylo#0 Constant (const byte[]) plot_xhi#13 = plot_xhi#0 +Constant (const byte[]) plot_xlo#13 = plot_xlo#0 Constant (const byte[]) plot_yhi#12 = plot_yhi#0 +Constant (const byte[]) plot_ylo#12 = plot_ylo#0 Constant (const byte[]) plot_bit#13 = plot_bit#0 Constant (const byte*) initscreen::b#0 = BITMAP#0 Constant (const byte*) BITMAP#2 = BITMAP#0 Constant (const byte*) SCREEN#1 = SCREEN#0 Constant (const byte[]) plot_xlo#1 = plot_xlo#0 -Constant (const byte*) BITMAP#13 = BITMAP#0 +Constant (const byte*) BITMAP#3 = BITMAP#0 Constant (const byte[]) plot_xhi#1 = plot_xhi#0 Constant (const byte[]) plot_bit#1 = plot_bit#0 Constant (const byte[]) plot_ylo#14 = plot_ylo#0 @@ -3987,7 +3971,7 @@ initplottables::@1: scope:[initplottables] from initplottables initplottables:: (byte) initplottables::x#2 ← phi( initplottables/(const byte) initplottables::x#0 initplottables::@2/(byte) initplottables::x#1 ) (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 *((const byte[]) plot_xlo#1 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 - (byte~) initplottables::$1 ← > (const byte*) BITMAP#13 + (byte~) initplottables::$1 ← > (const byte*) BITMAP#3 *((const byte[]) plot_xhi#1 + (byte) initplottables::x#2) ← (byte~) initplottables::$1 *((const byte[]) plot_bit#1 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 @@ -4028,19 +4012,19 @@ initplottables::@return: scope:[initplottables] from initplottables::@4 return to:@return plot: scope:[plot] from line::@1 - (byte*) plot::plotter#0 ← (const byte*) BITMAP#16 - (byte~) plot::$0 ← (const byte[]) plot_xlo#13 *idx (byte) plot::x#0 - (byte~) plot::$1 ← (const byte[]) plot_ylo#12 *idx (byte) plot::y#0 - (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 - (byte*) plot::plotter#1 ← (byte*) plot::plotter#0 lo= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_xhi#13 *idx (byte) plot::x#0 - (byte~) plot::$4 ← (const byte[]) plot_yhi#12 *idx (byte) plot::y#0 - (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 - (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 - (byte~) plot::$6 ← * (byte*) plot::plotter#2 - (byte~) plot::$7 ← (const byte[]) plot_bit#13 *idx (byte) plot::x#0 - (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 - *((byte*) plot::plotter#2) ← (byte~) plot::$8 + (byte~) plot::$0 ← (const byte[]) plot_xhi#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$0 + (byte~) plot::$1 ← (const byte[]) plot_xlo#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 + (byte~) plot::$2 ← (const byte[]) plot_yhi#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (byte~) plot::$3 ← (const byte[]) plot_ylo#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (byte~) plot::$5 ← * (byte*) plot::plotter#0 + (byte~) plot::$6 ← (const byte[]) plot_bit#13 *idx (byte) plot::x#0 + (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 + *((byte*) plot::plotter#0) ← (byte~) plot::$7 to:plot::@return plot::@return: scope:[plot] from plot return @@ -4054,10 +4038,9 @@ Constant (const byte) main::$1 = main::$0|RSEL#0 Constant (const byte*) initscreen::$0 = BITMAP#2+8192 Constant (const byte*) initscreen::c#0 = SCREEN#1 Constant (const byte*) SCREEN#2 = SCREEN#1 -Constant (const byte) initplottables::$1 = >BITMAP#13 +Constant (const byte) initplottables::$1 = >BITMAP#3 Constant (const byte[]) plot_ylo#1 = plot_ylo#14 Constant (const byte[]) plot_yhi#1 = plot_yhi#14 -Constant (const byte*) plot::plotter#0 = BITMAP#16 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -4185,18 +4168,19 @@ initplottables::@return: scope:[initplottables] from initplottables::@4 return to:@return plot: scope:[plot] from line::@1 - (byte~) plot::$0 ← (const byte[]) plot_xlo#13 *idx (byte) plot::x#0 - (byte~) plot::$1 ← (const byte[]) plot_ylo#12 *idx (byte) plot::y#0 - (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 - (byte*) plot::plotter#1 ← (const byte*) plot::plotter#0 lo= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_xhi#13 *idx (byte) plot::x#0 - (byte~) plot::$4 ← (const byte[]) plot_yhi#12 *idx (byte) plot::y#0 - (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 - (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 - (byte~) plot::$6 ← * (byte*) plot::plotter#2 - (byte~) plot::$7 ← (const byte[]) plot_bit#13 *idx (byte) plot::x#0 - (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 - *((byte*) plot::plotter#2) ← (byte~) plot::$8 + (byte~) plot::$0 ← (const byte[]) plot_xhi#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$0 + (byte~) plot::$1 ← (const byte[]) plot_xlo#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 + (byte~) plot::$2 ← (const byte[]) plot_yhi#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (byte~) plot::$3 ← (const byte[]) plot_ylo#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (byte~) plot::$5 ← * (byte*) plot::plotter#0 + (byte~) plot::$6 ← (const byte[]) plot_bit#13 *idx (byte) plot::x#0 + (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 + *((byte*) plot::plotter#0) ← (byte~) plot::$7 to:plot::@return plot::@return: scope:[plot] from plot return @@ -4333,18 +4317,19 @@ initplottables::@return: scope:[initplottables] from initplottables::@4 return to:@return plot: scope:[plot] from line::@1 - (byte~) plot::$0 ← (const byte[]) plot_xlo#13 *idx (byte) plot::x#0 - (byte~) plot::$1 ← (const byte[]) plot_ylo#12 *idx (byte) plot::y#0 - (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 - (byte*) plot::plotter#1 ← (const byte*) plot::plotter#0 lo= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_xhi#13 *idx (byte) plot::x#0 - (byte~) plot::$4 ← (const byte[]) plot_yhi#12 *idx (byte) plot::y#0 - (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 - (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 - (byte~) plot::$6 ← * (byte*) plot::plotter#2 - (byte~) plot::$7 ← (const byte[]) plot_bit#13 *idx (byte) plot::x#0 - (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 - *((byte*) plot::plotter#2) ← (byte~) plot::$8 + (byte~) plot::$0 ← (const byte[]) plot_xhi#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$0 + (byte~) plot::$1 ← (const byte[]) plot_xlo#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 + (byte~) plot::$2 ← (const byte[]) plot_yhi#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (byte~) plot::$3 ← (const byte[]) plot_ylo#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (byte~) plot::$5 ← * (byte*) plot::plotter#0 + (byte~) plot::$6 ← (const byte[]) plot_bit#13 *idx (byte) plot::x#0 + (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 + *((byte*) plot::plotter#0) ← (byte~) plot::$7 to:plot::@return plot::@return: scope:[plot] from plot return @@ -4363,9 +4348,9 @@ Multiple usages for variable. Not optimizing sub-constant (byte) initplottables: Multiple usages for variable. Not optimizing sub-constant (byte) initplottables::y#2 Multiple usages for variable. Not optimizing sub-constant (byte*) initplottables::yoffs#2 Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 +Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 Culled Empty Block (label) initscreen::@3 Not culling empty block because it shares successor with its predecessor. (label) initplottables::@5 @@ -4491,18 +4476,19 @@ initplottables::@return: scope:[initplottables] from initplottables::@4 return to:@return plot: scope:[plot] from line::@1 - (byte~) plot::$0 ← (const byte[]) plot_xlo#13 *idx (byte) plot::x#0 - (byte~) plot::$1 ← (const byte[]) plot_ylo#12 *idx (byte) plot::y#0 - (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 - (byte*) plot::plotter#1 ← (const byte*) plot::plotter#0 lo= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_xhi#13 *idx (byte) plot::x#0 - (byte~) plot::$4 ← (const byte[]) plot_yhi#12 *idx (byte) plot::y#0 - (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 - (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 - (byte~) plot::$6 ← * (byte*) plot::plotter#2 - (byte~) plot::$7 ← (const byte[]) plot_bit#13 *idx (byte) plot::x#0 - (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 - *((byte*) plot::plotter#2) ← (byte~) plot::$8 + (byte~) plot::$0 ← (const byte[]) plot_xhi#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$0 + (byte~) plot::$1 ← (const byte[]) plot_xlo#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 + (byte~) plot::$2 ← (const byte[]) plot_yhi#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (byte~) plot::$3 ← (const byte[]) plot_ylo#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (byte~) plot::$5 ← * (byte*) plot::plotter#0 + (byte~) plot::$6 ← (const byte[]) plot_bit#13 *idx (byte) plot::x#0 + (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 + *((byte*) plot::plotter#0) ← (byte~) plot::$7 to:plot::@return plot::@return: scope:[plot] from plot return @@ -4636,18 +4622,19 @@ initplottables::@return: scope:[initplottables] from initplottables::@4 return to:@return plot: scope:[plot] from line::@1 - (byte~) plot::$0 ← (const byte[]) plot_xlo#13 *idx (byte) plot::x#0 - (byte~) plot::$1 ← (const byte[]) plot_ylo#12 *idx (byte) plot::y#0 - (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 - (byte*) plot::plotter#1 ← (const byte*) plot::plotter#0 lo= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_xhi#13 *idx (byte) plot::x#0 - (byte~) plot::$4 ← (const byte[]) plot_yhi#12 *idx (byte) plot::y#0 - (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 - (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 - (byte~) plot::$6 ← * (byte*) plot::plotter#2 - (byte~) plot::$7 ← (const byte[]) plot_bit#13 *idx (byte) plot::x#0 - (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 - *((byte*) plot::plotter#2) ← (byte~) plot::$8 + (byte~) plot::$0 ← (const byte[]) plot_xhi#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$0 + (byte~) plot::$1 ← (const byte[]) plot_xlo#13 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 + (byte~) plot::$2 ← (const byte[]) plot_yhi#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (byte~) plot::$3 ← (const byte[]) plot_ylo#12 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (byte~) plot::$5 ← * (byte*) plot::plotter#0 + (byte~) plot::$6 ← (const byte[]) plot_bit#13 *idx (byte) plot::x#0 + (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 + *((byte*) plot::plotter#0) ← (byte~) plot::$7 to:plot::@return plot::@return: scope:[plot] from plot return @@ -4669,9 +4656,9 @@ Multiple usages for variable. Not optimizing sub-constant (byte) initplottables: Multiple usages for variable. Not optimizing sub-constant (byte) initplottables::y#2 Multiple usages for variable. Not optimizing sub-constant (byte*) initplottables::yoffs#2 Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 +Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 Not culling empty block because it shares successor with its predecessor. (label) initplottables::@5 Not aliassing across scopes: plot::x#0 line::x#2 @@ -4686,9 +4673,9 @@ Multiple usages for variable. Not optimizing sub-constant (byte) initplottables: Multiple usages for variable. Not optimizing sub-constant (byte) initplottables::y#2 Multiple usages for variable. Not optimizing sub-constant (byte*) initplottables::yoffs#2 Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 +Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 Constant inlined plot_bit#13 = (const byte[]) plot_bit#0 Constant inlined initplottables::bit#0 = (byte) 128 @@ -4699,36 +4686,36 @@ Constant inlined initplottables::yoffs#0 = (byte) 0 Constant inlined main::$1 = (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0 Constant inlined main::$2 = (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 Constant inlined main::$0 = (const byte) BMM#0|(const byte) DEN#0 -Constant inlined plot::plotter#0 = (const byte*) BITMAP#0 Constant inlined initscreen::$0 = (const byte*) BITMAP#0+(word) 8192 Constant inlined initscreen::$2 = (const byte*) SCREEN#0+(word) 1024 Constant inlined plot_bit#1 = (const byte[]) plot_bit#0 Constant inlined line::y0#1 = (byte) 20 Constant inlined line::y0#0 = (byte) 0 Constant inlined initplottables::$1 = >(const byte*) BITMAP#0 -Constant inlined line::y1#0 = (byte) 10 -Constant inlined line::y1#1 = (byte) 40 +Constant inlined line::y1#0 = (byte) 100 +Constant inlined line::y1#1 = (byte) 140 Constant inlined initplottables::y#0 = (byte) 0 Constant inlined plot_xlo#1 = (const byte[]) plot_xlo#0 Constant inlined initplottables::x#0 = (byte) 0 Constant inlined SCREEN#2 = (const byte*) SCREEN#0 Constant inlined plot_ylo#14 = (const byte[]) plot_ylo#0 Constant inlined SCREEN#1 = (const byte*) SCREEN#0 +Constant inlined BITMAP#3 = (const byte*) BITMAP#0 Constant inlined BITMAP#2 = (const byte*) BITMAP#0 Constant inlined initscreen::c#0 = (const byte*) SCREEN#0 Constant inlined plot_xlo#13 = (const byte[]) plot_xlo#0 -Constant inlined line::x1#0 = (byte) 20 -Constant inlined line::x1#1 = (byte) 40 +Constant inlined line::x1#0 = (byte) 200 +Constant inlined line::x1#1 = (byte) 140 Constant inlined plot_ylo#12 = (const byte[]) plot_ylo#0 +Constant inlined plot::plotter_y#0 = (byte) 0 Constant inlined plot_xhi#1 = (const byte[]) plot_xhi#0 -Constant inlined BITMAP#13 = (const byte*) BITMAP#0 Constant inlined plot_yhi#12 = (const byte[]) plot_yhi#0 Constant inlined line::x0#0 = (byte) 0 Constant inlined line::x0#1 = (byte) 10 Constant inlined plot_yhi#14 = (const byte[]) plot_yhi#0 Constant inlined initscreen::b#0 = (const byte*) BITMAP#0 Constant inlined plot_yhi#1 = (const byte[]) plot_yhi#0 -Constant inlined BITMAP#16 = (const byte*) BITMAP#0 +Constant inlined plot::plotter_x#0 = (byte) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -4754,9 +4741,9 @@ main::@return: scope:[main] from main::@3 to:@return line: scope:[line] from main::@2 main::@3 (byte) line::y#0 ← phi( main::@2/(byte) 0 main::@3/(byte) 20 ) - (byte) line::y1#2 ← phi( main::@2/(byte) 10 main::@3/(byte) 40 ) + (byte) line::y1#2 ← phi( main::@2/(byte) 100 main::@3/(byte) 140 ) (byte) line::x#0 ← phi( main::@2/(byte) 0 main::@3/(byte) 10 ) - (byte) line::x1#2 ← phi( main::@2/(byte) 20 main::@3/(byte) 40 ) + (byte) line::x1#2 ← phi( main::@2/(byte) 200 main::@3/(byte) 140 ) (byte) line::xd#0 ← (byte) line::x1#2 - (byte) line::x#0 (byte) line::yd#0 ← (byte) line::y1#2 - (byte) line::y#0 (byte) line::e#0 ← (byte) line::yd#0 >> (byte) 1 @@ -4847,18 +4834,19 @@ initplottables::@return: scope:[initplottables] from initplottables::@4 return to:@return plot: scope:[plot] from line::@1 - (byte~) plot::$0 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 - (byte~) plot::$1 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 - (byte*) plot::plotter#1 ← (const byte*) BITMAP#0 lo= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte~) plot::$4 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 - (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 - (byte~) plot::$6 ← * (byte*) plot::plotter#2 - (byte~) plot::$7 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 - (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 - *((byte*) plot::plotter#2) ← (byte~) plot::$8 + (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 + (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 + (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 + (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (byte~) plot::$5 ← * (byte*) plot::plotter#0 + (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 + (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 + *((byte*) plot::plotter#0) ← (byte~) plot::$7 to:plot::@return plot::@return: scope:[plot] from plot return @@ -4984,15 +4972,18 @@ FINAL SYMBOL TABLE (byte~) plot::$1 (byte~) plot::$2 (byte~) plot::$3 -(byte~) plot::$4 (byte~) plot::$5 (byte~) plot::$6 (byte~) plot::$7 -(byte~) plot::$8 (label) plot::@return (byte*) plot::plotter -(byte*) plot::plotter#1 -(byte*) plot::plotter#2 +(byte*) plot::plotter#0 +(byte*) plot::plotter_x +(byte*) plot::plotter_x#1 +(byte*) plot::plotter_x#2 +(byte*) plot::plotter_y +(byte*) plot::plotter_y#1 +(byte*) plot::plotter_y#2 (byte) plot::x (byte) plot::x#0 (byte) plot::y @@ -5046,9 +5037,9 @@ main::@return: scope:[main] from main::@3 to:@return line: scope:[line] from main::@2 main::@3 (byte) line::y#0 ← phi( main::@2/(byte) 0 main::@3/(byte) 20 ) - (byte) line::y1#2 ← phi( main::@2/(byte) 10 main::@3/(byte) 40 ) + (byte) line::y1#2 ← phi( main::@2/(byte) 100 main::@3/(byte) 140 ) (byte) line::x#0 ← phi( main::@2/(byte) 0 main::@3/(byte) 10 ) - (byte) line::x1#2 ← phi( main::@2/(byte) 20 main::@3/(byte) 40 ) + (byte) line::x1#2 ← phi( main::@2/(byte) 200 main::@3/(byte) 140 ) (byte) line::xd#0 ← (byte) line::x1#2 - (byte) line::x#0 (byte) line::yd#0 ← (byte) line::y1#2 - (byte) line::y#0 (byte) line::e#0 ← (byte) line::yd#0 >> (byte) 1 @@ -5094,18 +5085,19 @@ line::@7: scope:[line] from line::@5 (byte~) line::e#10 ← (byte) line::e#1 to:line::@2 plot: scope:[plot] from line::@1 - (byte~) plot::$0 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 - (byte~) plot::$1 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 - (byte*) plot::plotter#1 ← (const byte*) BITMAP#0 lo= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte~) plot::$4 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 - (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 - (byte~) plot::$6 ← * (byte*) plot::plotter#2 - (byte~) plot::$7 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 - (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 - *((byte*) plot::plotter#2) ← (byte~) plot::$8 + (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 + (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 + (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 + (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 + (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (byte~) plot::$5 ← * (byte*) plot::plotter#0 + (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 + (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 + *((byte*) plot::plotter#0) ← (byte~) plot::$7 to:plot::@return plot::@return: scope:[plot] from plot return @@ -5242,9 +5234,9 @@ main::@return: scope:[main] from main::@3 to:@return line: scope:[line] from main::@2 main::@3 [10] (byte) line::y#0 ← phi( main::@2/(byte) 0 main::@3/(byte) 20 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] - [10] (byte) line::y1#2 ← phi( main::@2/(byte) 10 main::@3/(byte) 40 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] + [10] (byte) line::y1#2 ← phi( main::@2/(byte) 100 main::@3/(byte) 140 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] [10] (byte) line::x#0 ← phi( main::@2/(byte) 0 main::@3/(byte) 10 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] - [10] (byte) line::x1#2 ← phi( main::@2/(byte) 20 main::@3/(byte) 40 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] + [10] (byte) line::x1#2 ← phi( main::@2/(byte) 200 main::@3/(byte) 140 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] [11] (byte) line::xd#0 ← (byte) line::x1#2 - (byte) line::x#0 [ line::x1#2 line::x#0 line::y1#2 line::y#0 line::xd#0 ] [12] (byte) line::yd#0 ← (byte) line::y1#2 - (byte) line::y#0 [ line::x1#2 line::x#0 line::y#0 line::xd#0 line::yd#0 ] [13] (byte) line::e#0 ← (byte) line::yd#0 >> (byte) 1 [ line::x1#2 line::x#0 line::y#0 line::xd#0 line::yd#0 line::e#0 ] @@ -5290,103 +5282,104 @@ line::@7: scope:[line] from line::@5 [36] (byte~) line::e#10 ← (byte) line::e#1 [ line::x1#2 line::xd#0 line::yd#0 line::x#1 line::y#9 line::e#10 ] to:line::@2 plot: scope:[plot] from line::@1 - [37] (byte~) plot::$0 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] - [38] (byte~) plot::$1 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::$0 plot::$1 ] - [39] (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::$2 ] - [40] (byte*) plot::plotter#1 ← (const byte*) BITMAP#0 lo= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter#1 ] - [41] (byte~) plot::$3 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter#1 plot::$3 ] - [42] (byte~) plot::$4 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter#1 plot::$3 plot::$4 ] - [43] (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 [ plot::x#0 plot::plotter#1 plot::$5 ] - [44] (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 [ plot::x#0 plot::plotter#2 ] - [45] (byte~) plot::$6 ← * (byte*) plot::plotter#2 [ plot::x#0 plot::plotter#2 plot::$6 ] - [46] (byte~) plot::$7 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#2 plot::$6 plot::$7 ] - [47] (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 [ plot::plotter#2 plot::$8 ] - [48] *((byte*) plot::plotter#2) ← (byte~) plot::$8 [ ] + [37] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] + [38] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] + [39] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] + [40] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] + [41] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] + [42] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] + [43] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] + [44] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] + [45] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] + [46] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#0 plot::plotter#0 plot::$5 ] + [47] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 plot::$6 ] + [48] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ] + [49] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ] to:plot::@return plot::@return: scope:[plot] from plot - [49] return [ ] + [50] return [ ] to:@return initplottables: scope:[initplottables] from main::@1 - [50] phi() [ ] + [51] phi() [ ] to:initplottables::@1 initplottables::@1: scope:[initplottables] from initplottables initplottables::@9 - [51] (byte) initplottables::bit#3 ← phi( initplottables/(byte) 128 initplottables::@9/(byte~) initplottables::bit#5 ) [ initplottables::x#2 initplottables::bit#3 ] - [51] (byte) initplottables::x#2 ← phi( initplottables/(byte) 0 initplottables::@9/(byte~) initplottables::x#5 ) [ initplottables::x#2 initplottables::bit#3 ] - [52] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] - [53] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] - [54] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] - [55] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] - [56] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] - [57] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 initplottables::bit#1 ] + [52] (byte) initplottables::bit#3 ← phi( initplottables/(byte) 128 initplottables::@9/(byte~) initplottables::bit#5 ) [ initplottables::x#2 initplottables::bit#3 ] + [52] (byte) initplottables::x#2 ← phi( initplottables/(byte) 0 initplottables::@9/(byte~) initplottables::x#5 ) [ initplottables::x#2 initplottables::bit#3 ] + [53] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] + [54] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] + [55] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] + [56] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] + [57] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] + [58] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 initplottables::bit#1 ] to:initplottables::@5 initplottables::@5: scope:[initplottables] from initplottables::@1 to:initplottables::@2 initplottables::@2: scope:[initplottables] from initplottables::@10 initplottables::@5 - [58] (byte) initplottables::bit#4 ← phi( initplottables::@10/(byte~) initplottables::bit#6 initplottables::@5/(byte) 128 ) [ initplottables::x#2 initplottables::bit#4 ] - [59] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::bit#4 initplottables::x#1 ] - [60] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@9 [ initplottables::bit#4 initplottables::x#1 ] + [59] (byte) initplottables::bit#4 ← phi( initplottables::@10/(byte~) initplottables::bit#6 initplottables::@5/(byte) 128 ) [ initplottables::x#2 initplottables::bit#4 ] + [60] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::bit#4 initplottables::x#1 ] + [61] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@9 [ initplottables::bit#4 initplottables::x#1 ] to:initplottables::@3 initplottables::@3: scope:[initplottables] from initplottables::@11 initplottables::@2 - [61] (byte*) initplottables::yoffs#2 ← phi( initplottables::@11/(byte*~) initplottables::yoffs#5 initplottables::@2/(byte) 0 ) [ initplottables::y#2 initplottables::yoffs#2 ] - [61] (byte) initplottables::y#2 ← phi( initplottables::@11/(byte~) initplottables::y#5 initplottables::@2/(byte) 0 ) [ initplottables::y#2 initplottables::yoffs#2 ] - [62] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] - [63] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] - [64] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] - [65] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] - [66] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] - [67] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] - [68] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] - [69] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@12 [ initplottables::y#2 initplottables::yoffs#2 ] + [62] (byte*) initplottables::yoffs#2 ← phi( initplottables::@11/(byte*~) initplottables::yoffs#5 initplottables::@2/(byte) 0 ) [ initplottables::y#2 initplottables::yoffs#2 ] + [62] (byte) initplottables::y#2 ← phi( initplottables::@11/(byte~) initplottables::y#5 initplottables::@2/(byte) 0 ) [ initplottables::y#2 initplottables::yoffs#2 ] + [63] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] + [64] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] + [65] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] + [66] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] + [67] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] + [68] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] + [69] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] + [70] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@12 [ initplottables::y#2 initplottables::yoffs#2 ] to:initplottables::@7 initplottables::@7: scope:[initplottables] from initplottables::@3 - [70] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] - [71] (byte*~) initplottables::yoffs#7 ← (byte*) initplottables::yoffs#1 [ initplottables::y#2 initplottables::yoffs#7 ] + [71] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] + [72] (byte*~) initplottables::yoffs#7 ← (byte*) initplottables::yoffs#1 [ initplottables::y#2 initplottables::yoffs#7 ] to:initplottables::@4 initplottables::@4: scope:[initplottables] from initplottables::@12 initplottables::@7 - [72] (byte*) initplottables::yoffs#4 ← phi( initplottables::@12/(byte*~) initplottables::yoffs#6 initplottables::@7/(byte*~) initplottables::yoffs#7 ) [ initplottables::y#2 initplottables::yoffs#4 ] - [73] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::yoffs#4 initplottables::y#1 ] - [74] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@11 [ initplottables::yoffs#4 initplottables::y#1 ] + [73] (byte*) initplottables::yoffs#4 ← phi( initplottables::@12/(byte*~) initplottables::yoffs#6 initplottables::@7/(byte*~) initplottables::yoffs#7 ) [ initplottables::y#2 initplottables::yoffs#4 ] + [74] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::yoffs#4 initplottables::y#1 ] + [75] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@11 [ initplottables::yoffs#4 initplottables::y#1 ] to:initplottables::@return initplottables::@return: scope:[initplottables] from initplottables::@4 - [75] return [ ] + [76] return [ ] to:@return initplottables::@11: scope:[initplottables] from initplottables::@4 - [76] (byte~) initplottables::y#5 ← (byte) initplottables::y#1 [ initplottables::y#5 initplottables::yoffs#4 ] - [77] (byte*~) initplottables::yoffs#5 ← (byte*) initplottables::yoffs#4 [ initplottables::y#5 initplottables::yoffs#5 ] + [77] (byte~) initplottables::y#5 ← (byte) initplottables::y#1 [ initplottables::y#5 initplottables::yoffs#4 ] + [78] (byte*~) initplottables::yoffs#5 ← (byte*) initplottables::yoffs#4 [ initplottables::y#5 initplottables::yoffs#5 ] to:initplottables::@3 initplottables::@12: scope:[initplottables] from initplottables::@3 - [78] (byte*~) initplottables::yoffs#6 ← (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#6 ] + [79] (byte*~) initplottables::yoffs#6 ← (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#6 ] to:initplottables::@4 initplottables::@9: scope:[initplottables] from initplottables::@2 - [79] (byte~) initplottables::x#5 ← (byte) initplottables::x#1 [ initplottables::x#5 initplottables::bit#4 ] - [80] (byte~) initplottables::bit#5 ← (byte) initplottables::bit#4 [ initplottables::x#5 initplottables::bit#5 ] + [80] (byte~) initplottables::x#5 ← (byte) initplottables::x#1 [ initplottables::x#5 initplottables::bit#4 ] + [81] (byte~) initplottables::bit#5 ← (byte) initplottables::bit#4 [ initplottables::x#5 initplottables::bit#5 ] to:initplottables::@1 initplottables::@10: scope:[initplottables] from initplottables::@1 - [81] (byte~) initplottables::bit#6 ← (byte) initplottables::bit#1 [ initplottables::x#2 initplottables::bit#6 ] + [82] (byte~) initplottables::bit#6 ← (byte) initplottables::bit#1 [ initplottables::x#2 initplottables::bit#6 ] to:initplottables::@2 initscreen: scope:[initscreen] from main - [82] phi() [ ] + [83] phi() [ ] to:initscreen::@1 initscreen::@1: scope:[initscreen] from initscreen initscreen::@5 - [83] (byte*) initscreen::b#2 ← phi( initscreen/(const byte*) BITMAP#0 initscreen::@5/(byte*~) initscreen::b#3 ) [ initscreen::b#2 ] - [84] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] - [85] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] - [86] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@5 [ initscreen::b#1 ] + [84] (byte*) initscreen::b#2 ← phi( initscreen/(const byte*) BITMAP#0 initscreen::@5/(byte*~) initscreen::b#3 ) [ initscreen::b#2 ] + [85] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] + [86] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] + [87] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@5 [ initscreen::b#1 ] to:initscreen::@2 initscreen::@2: scope:[initscreen] from initscreen::@1 initscreen::@6 - [87] (byte*) initscreen::c#2 ← phi( initscreen::@6/(byte*~) initscreen::c#3 initscreen::@1/(const byte*) SCREEN#0 ) [ initscreen::c#2 ] - [88] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] - [89] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] - [90] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@6 [ initscreen::c#1 ] + [88] (byte*) initscreen::c#2 ← phi( initscreen::@6/(byte*~) initscreen::c#3 initscreen::@1/(const byte*) SCREEN#0 ) [ initscreen::c#2 ] + [89] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] + [90] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] + [91] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@6 [ initscreen::c#1 ] to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@2 - [91] return [ ] + [92] return [ ] to:@return initscreen::@6: scope:[initscreen] from initscreen::@2 - [92] (byte*~) initscreen::c#3 ← (byte*) initscreen::c#1 [ initscreen::c#3 ] + [93] (byte*~) initscreen::c#3 ← (byte*) initscreen::c#1 [ initscreen::c#3 ] to:initscreen::@2 initscreen::@5: scope:[initscreen] from initscreen::@1 - [93] (byte*~) initscreen::b#3 ← (byte*) initscreen::b#1 [ initscreen::b#3 ] + [94] (byte*~) initscreen::b#3 ← (byte*) initscreen::b#1 [ initscreen::b#3 ] to:initscreen::@1 Created 17 initial phi equivalence classes @@ -5400,15 +5393,15 @@ Coalesced [33] line::y#7 ← line::y#4 Coalesced [34] line::e#8 ← line::e#6 Coalesced (already) [35] line::y#9 ← line::y#2 Coalesced [36] line::e#10 ← line::e#1 -Coalesced [71] initplottables::yoffs#7 ← initplottables::yoffs#1 -Coalesced [76] initplottables::y#5 ← initplottables::y#1 -Coalesced [77] initplottables::yoffs#5 ← initplottables::yoffs#4 -Coalesced (already) [78] initplottables::yoffs#6 ← initplottables::yoffs#2 -Coalesced [79] initplottables::x#5 ← initplottables::x#1 -Coalesced [80] initplottables::bit#5 ← initplottables::bit#4 -Coalesced [81] initplottables::bit#6 ← initplottables::bit#1 -Coalesced [92] initscreen::c#3 ← initscreen::c#1 -Coalesced [93] initscreen::b#3 ← initscreen::b#1 +Coalesced [72] initplottables::yoffs#7 ← initplottables::yoffs#1 +Coalesced [77] initplottables::y#5 ← initplottables::y#1 +Coalesced [78] initplottables::yoffs#5 ← initplottables::yoffs#4 +Coalesced (already) [79] initplottables::yoffs#6 ← initplottables::yoffs#2 +Coalesced [80] initplottables::x#5 ← initplottables::x#1 +Coalesced [81] initplottables::bit#5 ← initplottables::bit#4 +Coalesced [82] initplottables::bit#6 ← initplottables::bit#1 +Coalesced [93] initscreen::c#3 ← initscreen::c#1 +Coalesced [94] initscreen::b#3 ← initscreen::b#1 Coalesced down to 11 phi equivalence classes Culled Empty Block (label) line::@6 Culled Empty Block (label) line::@7 @@ -5462,9 +5455,9 @@ main::@return: scope:[main] from main::@3 to:@return line: scope:[line] from main::@2 main::@3 [10] (byte) line::y#0 ← phi( main::@2/(byte) 0 main::@3/(byte) 20 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] - [10] (byte) line::y1#2 ← phi( main::@2/(byte) 10 main::@3/(byte) 40 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] + [10] (byte) line::y1#2 ← phi( main::@2/(byte) 100 main::@3/(byte) 140 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] [10] (byte) line::x#0 ← phi( main::@2/(byte) 0 main::@3/(byte) 10 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] - [10] (byte) line::x1#2 ← phi( main::@2/(byte) 20 main::@3/(byte) 40 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] + [10] (byte) line::x1#2 ← phi( main::@2/(byte) 200 main::@3/(byte) 140 ) [ line::x1#2 line::x#0 line::y1#2 line::y#0 ] [11] (byte) line::xd#0 ← (byte) line::x1#2 - (byte) line::x#0 [ line::x1#2 line::x#0 line::y1#2 line::y#0 line::xd#0 ] [12] (byte) line::yd#0 ← (byte) line::y1#2 - (byte) line::y#0 [ line::x1#2 line::x#0 line::y#0 line::xd#0 line::yd#0 ] [13] (byte) line::e#0 ← (byte) line::yd#0 >> (byte) 1 [ line::x1#2 line::x#0 line::y#0 line::xd#0 line::yd#0 line::e#0 ] @@ -5496,82 +5489,83 @@ line::@return: scope:[line] from line::@2 [26] return [ ] to:@return plot: scope:[plot] from line::@1 - [27] (byte~) plot::$0 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] - [28] (byte~) plot::$1 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::$0 plot::$1 ] - [29] (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::$2 ] - [30] (byte*) plot::plotter#1 ← (const byte*) BITMAP#0 lo= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter#1 ] - [31] (byte~) plot::$3 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter#1 plot::$3 ] - [32] (byte~) plot::$4 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter#1 plot::$3 plot::$4 ] - [33] (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 [ plot::x#0 plot::plotter#1 plot::$5 ] - [34] (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 [ plot::x#0 plot::plotter#2 ] - [35] (byte~) plot::$6 ← * (byte*) plot::plotter#2 [ plot::x#0 plot::plotter#2 plot::$6 ] - [36] (byte~) plot::$7 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#2 plot::$6 plot::$7 ] - [37] (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 [ plot::plotter#2 plot::$8 ] - [38] *((byte*) plot::plotter#2) ← (byte~) plot::$8 [ ] + [27] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] + [28] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] + [29] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] + [30] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] + [31] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] + [32] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] + [33] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] + [34] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] + [35] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] + [36] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#0 plot::plotter#0 plot::$5 ] + [37] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 plot::$6 ] + [38] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ] + [39] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ] to:plot::@return plot::@return: scope:[plot] from plot - [39] return [ ] + [40] return [ ] to:@return initplottables: scope:[initplottables] from main::@1 - [40] phi() [ ] + [41] phi() [ ] to:initplottables::@1 initplottables::@1: scope:[initplottables] from initplottables initplottables::@2 - [41] (byte) initplottables::bit#3 ← phi( initplottables/(byte) 128 initplottables::@2/(byte) initplottables::bit#4 ) [ initplottables::x#2 initplottables::bit#3 ] - [41] (byte) initplottables::x#2 ← phi( initplottables/(byte) 0 initplottables::@2/(byte) initplottables::x#1 ) [ initplottables::x#2 initplottables::bit#3 ] - [42] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] - [43] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] - [44] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] - [45] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] - [46] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] - [47] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] + [42] (byte) initplottables::bit#3 ← phi( initplottables/(byte) 128 initplottables::@2/(byte) initplottables::bit#4 ) [ initplottables::x#2 initplottables::bit#3 ] + [42] (byte) initplottables::x#2 ← phi( initplottables/(byte) 0 initplottables::@2/(byte) initplottables::x#1 ) [ initplottables::x#2 initplottables::bit#3 ] + [43] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] + [44] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] + [45] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] + [46] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] + [47] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] + [48] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] to:initplottables::@2 initplottables::@2: scope:[initplottables] from initplottables::@1 initplottables::@10 - [48] (byte) initplottables::bit#4 ← phi( initplottables::@10/(byte) initplottables::bit#1 initplottables::@1/(byte) 128 ) [ initplottables::x#2 initplottables::bit#4 ] - [49] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] - [50] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] + [49] (byte) initplottables::bit#4 ← phi( initplottables::@10/(byte) initplottables::bit#1 initplottables::@1/(byte) 128 ) [ initplottables::x#2 initplottables::bit#4 ] + [50] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] + [51] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] to:initplottables::@3 initplottables::@3: scope:[initplottables] from initplottables::@2 initplottables::@4 - [51] (byte*) initplottables::yoffs#2 ← phi( initplottables::@4/(byte*) initplottables::yoffs#4 initplottables::@2/(byte) 0 ) [ initplottables::y#2 initplottables::yoffs#2 ] - [51] (byte) initplottables::y#2 ← phi( initplottables::@4/(byte) initplottables::y#1 initplottables::@2/(byte) 0 ) [ initplottables::y#2 initplottables::yoffs#2 ] - [52] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] - [53] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] - [54] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] - [55] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] - [56] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] - [57] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] - [58] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] - [59] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] + [52] (byte*) initplottables::yoffs#2 ← phi( initplottables::@4/(byte*) initplottables::yoffs#4 initplottables::@2/(byte) 0 ) [ initplottables::y#2 initplottables::yoffs#2 ] + [52] (byte) initplottables::y#2 ← phi( initplottables::@4/(byte) initplottables::y#1 initplottables::@2/(byte) 0 ) [ initplottables::y#2 initplottables::yoffs#2 ] + [53] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] + [54] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] + [55] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] + [56] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] + [57] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] + [58] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] + [59] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] + [60] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] to:initplottables::@7 initplottables::@7: scope:[initplottables] from initplottables::@3 - [60] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] + [61] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] to:initplottables::@4 initplottables::@4: scope:[initplottables] from initplottables::@3 initplottables::@7 - [61] (byte*) initplottables::yoffs#4 ← phi( initplottables::@3/(byte*) initplottables::yoffs#2 initplottables::@7/(byte*) initplottables::yoffs#1 ) [ initplottables::y#2 initplottables::yoffs#4 ] - [62] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] - [63] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] + [62] (byte*) initplottables::yoffs#4 ← phi( initplottables::@3/(byte*) initplottables::yoffs#2 initplottables::@7/(byte*) initplottables::yoffs#1 ) [ initplottables::y#2 initplottables::yoffs#4 ] + [63] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] + [64] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] to:initplottables::@return initplottables::@return: scope:[initplottables] from initplottables::@4 - [64] return [ ] + [65] return [ ] to:@return initplottables::@10: scope:[initplottables] from initplottables::@1 to:initplottables::@2 initscreen: scope:[initscreen] from main - [65] phi() [ ] + [66] phi() [ ] to:initscreen::@1 initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 - [66] (byte*) initscreen::b#2 ← phi( initscreen/(const byte*) BITMAP#0 initscreen::@1/(byte*) initscreen::b#1 ) [ initscreen::b#2 ] - [67] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] - [68] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] - [69] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] + [67] (byte*) initscreen::b#2 ← phi( initscreen/(const byte*) BITMAP#0 initscreen::@1/(byte*) initscreen::b#1 ) [ initscreen::b#2 ] + [68] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] + [69] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] + [70] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] to:initscreen::@2 initscreen::@2: scope:[initscreen] from initscreen::@1 initscreen::@2 - [70] (byte*) initscreen::c#2 ← phi( initscreen::@2/(byte*) initscreen::c#1 initscreen::@1/(const byte*) SCREEN#0 ) [ initscreen::c#2 ] - [71] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] - [72] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] - [73] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] + [71] (byte*) initscreen::c#2 ← phi( initscreen::@2/(byte*) initscreen::c#1 initscreen::@1/(const byte*) SCREEN#0 ) [ initscreen::c#2 ] + [72] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] + [73] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] + [74] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@2 - [74] return [ ] + [75] return [ ] to:@return DOMINATORS @@ -5714,22 +5708,25 @@ VARIABLE REGISTER WEIGHTS (byte) line::yd#0 1.0714285714285714 (void()) main() (void()) plot((byte) plot::x , (byte) plot::y) -(byte~) plot::$0 2.0 +(byte~) plot::$0 4.0 (byte~) plot::$1 4.0 (byte~) plot::$2 4.0 -(byte~) plot::$3 2.0 -(byte~) plot::$4 4.0 -(byte~) plot::$5 4.0 -(byte~) plot::$6 2.0 +(byte~) plot::$3 4.0 +(byte~) plot::$5 2.0 +(byte~) plot::$6 4.0 (byte~) plot::$7 4.0 -(byte~) plot::$8 4.0 (byte*) plot::plotter -(byte*) plot::plotter#1 1.0 -(byte*) plot::plotter#2 1.5 +(byte*) plot::plotter#0 1.5 +(byte*) plot::plotter_x +(byte*) plot::plotter_x#1 2.0 +(byte*) plot::plotter_x#2 0.8 +(byte*) plot::plotter_y +(byte*) plot::plotter_y#1 2.0 +(byte*) plot::plotter_y#2 4.0 (byte) plot::x -(byte) plot::x#0 1.5454545454545456 +(byte) plot::x#0 1.4166666666666667 (byte) plot::y -(byte) plot::y#0 2.5 +(byte) plot::y#0 2.142857142857143 (byte[]) plot_bit (byte[]) plot_xhi (byte[]) plot_xlo @@ -5754,16 +5751,17 @@ Added variable plot::x#0 to zero page equivalence class [ plot::x#0 ] Added variable plot::y#0 to zero page equivalence class [ plot::y#0 ] Added variable line::$10 to zero page equivalence class [ line::$10 ] Added variable plot::$0 to zero page equivalence class [ plot::$0 ] +Added variable plot::plotter_x#1 to zero page equivalence class [ plot::plotter_x#1 ] Added variable plot::$1 to zero page equivalence class [ plot::$1 ] +Added variable plot::plotter_x#2 to zero page equivalence class [ plot::plotter_x#2 ] Added variable plot::$2 to zero page equivalence class [ plot::$2 ] -Added variable plot::plotter#1 to zero page equivalence class [ plot::plotter#1 ] +Added variable plot::plotter_y#1 to zero page equivalence class [ plot::plotter_y#1 ] Added variable plot::$3 to zero page equivalence class [ plot::$3 ] -Added variable plot::$4 to zero page equivalence class [ plot::$4 ] +Added variable plot::plotter_y#2 to zero page equivalence class [ plot::plotter_y#2 ] +Added variable plot::plotter#0 to zero page equivalence class [ plot::plotter#0 ] Added variable plot::$5 to zero page equivalence class [ plot::$5 ] -Added variable plot::plotter#2 to zero page equivalence class [ plot::plotter#2 ] Added variable plot::$6 to zero page equivalence class [ plot::$6 ] Added variable plot::$7 to zero page equivalence class [ plot::$7 ] -Added variable plot::$8 to zero page equivalence class [ plot::$8 ] Added variable initplottables::$0 to zero page equivalence class [ initplottables::$0 ] Added variable initplottables::$6 to zero page equivalence class [ initplottables::$6 ] Added variable initplottables::$7 to zero page equivalence class [ initplottables::$7 ] @@ -5788,16 +5786,17 @@ Complete equivalence classes [ plot::y#0 ] [ line::$10 ] [ plot::$0 ] +[ plot::plotter_x#1 ] [ plot::$1 ] +[ plot::plotter_x#2 ] [ plot::$2 ] -[ plot::plotter#1 ] +[ plot::plotter_y#1 ] [ plot::$3 ] -[ plot::$4 ] +[ plot::plotter_y#2 ] +[ plot::plotter#0 ] [ plot::$5 ] -[ plot::plotter#2 ] [ plot::$6 ] [ plot::$7 ] -[ plot::$8 ] [ initplottables::$0 ] [ initplottables::$6 ] [ initplottables::$7 ] @@ -5821,22 +5820,23 @@ Allocated zp ZP_BYTE:18 [ plot::x#0 ] Allocated zp ZP_BYTE:19 [ plot::y#0 ] Allocated zp ZP_BYTE:20 [ line::$10 ] Allocated zp ZP_BYTE:21 [ plot::$0 ] -Allocated zp ZP_BYTE:22 [ plot::$1 ] -Allocated zp ZP_BYTE:23 [ plot::$2 ] -Allocated zp ZP_PTR_BYTE:24 [ plot::plotter#1 ] -Allocated zp ZP_BYTE:26 [ plot::$3 ] -Allocated zp ZP_BYTE:27 [ plot::$4 ] -Allocated zp ZP_BYTE:28 [ plot::$5 ] -Allocated zp ZP_PTR_BYTE:29 [ plot::plotter#2 ] -Allocated zp ZP_BYTE:31 [ plot::$6 ] -Allocated zp ZP_BYTE:32 [ plot::$7 ] -Allocated zp ZP_BYTE:33 [ plot::$8 ] -Allocated zp ZP_BYTE:34 [ initplottables::$0 ] -Allocated zp ZP_BYTE:35 [ initplottables::$6 ] -Allocated zp ZP_BYTE:36 [ initplottables::$7 ] -Allocated zp ZP_BYTE:37 [ initplottables::$8 ] -Allocated zp ZP_BYTE:38 [ initplottables::$9 ] -Allocated zp ZP_BYTE:39 [ initplottables::$10 ] +Allocated zp ZP_PTR_BYTE:22 [ plot::plotter_x#1 ] +Allocated zp ZP_BYTE:24 [ plot::$1 ] +Allocated zp ZP_PTR_BYTE:25 [ plot::plotter_x#2 ] +Allocated zp ZP_BYTE:27 [ plot::$2 ] +Allocated zp ZP_PTR_BYTE:28 [ plot::plotter_y#1 ] +Allocated zp ZP_BYTE:30 [ plot::$3 ] +Allocated zp ZP_PTR_BYTE:31 [ plot::plotter_y#2 ] +Allocated zp ZP_PTR_BYTE:33 [ plot::plotter#0 ] +Allocated zp ZP_BYTE:35 [ plot::$5 ] +Allocated zp ZP_BYTE:36 [ plot::$6 ] +Allocated zp ZP_BYTE:37 [ plot::$7 ] +Allocated zp ZP_BYTE:38 [ initplottables::$0 ] +Allocated zp ZP_BYTE:39 [ initplottables::$6 ] +Allocated zp ZP_BYTE:40 [ initplottables::$7 ] +Allocated zp ZP_BYTE:41 [ initplottables::$8 ] +Allocated zp ZP_BYTE:42 [ initplottables::$9 ] +Allocated zp ZP_BYTE:43 [ initplottables::$10 ] INITIAL ASM //SEG0 Global Constants & labels .const COLS = $d800 @@ -5885,14 +5885,14 @@ main: { lda #$18 sta D018 //SEG10 [5] call initscreen param-assignment [ ] - //SEG11 [65] phi from main to initscreen [phi:main->initscreen] + //SEG11 [66] phi from main to initscreen [phi:main->initscreen] initscreen_from_main: jsr initscreen jmp b1 //SEG12 main::@1 b1: //SEG13 [6] call initplottables param-assignment [ ] - //SEG14 [40] phi from main::@1 to initplottables [phi:main::@1->initplottables] + //SEG14 [41] phi from main::@1 to initplottables [phi:main::@1->initplottables] initplottables_from_b1: jsr initplottables jmp b2 @@ -5904,14 +5904,14 @@ main: { //SEG18 [10] phi (byte) line::y#0 = (byte) 0 [phi:main::@2->line#0] -- zpby1=coby1 lda #0 sta line.y - //SEG19 [10] phi (byte) line::y1#2 = (byte) 10 [phi:main::@2->line#1] -- zpby1=coby1 - lda #$a + //SEG19 [10] phi (byte) line::y1#2 = (byte) 100 [phi:main::@2->line#1] -- zpby1=coby1 + lda #$64 sta line.y1 //SEG20 [10] phi (byte) line::x#0 = (byte) 0 [phi:main::@2->line#2] -- zpby1=coby1 lda #0 sta line.x - //SEG21 [10] phi (byte) line::x1#2 = (byte) 20 [phi:main::@2->line#3] -- zpby1=coby1 - lda #$14 + //SEG21 [10] phi (byte) line::x1#2 = (byte) 200 [phi:main::@2->line#3] -- zpby1=coby1 + lda #$c8 sta line.x1 jsr line jmp b3 @@ -5923,14 +5923,14 @@ main: { //SEG25 [10] phi (byte) line::y#0 = (byte) 20 [phi:main::@3->line#0] -- zpby1=coby1 lda #$14 sta line.y - //SEG26 [10] phi (byte) line::y1#2 = (byte) 40 [phi:main::@3->line#1] -- zpby1=coby1 - lda #$28 + //SEG26 [10] phi (byte) line::y1#2 = (byte) 140 [phi:main::@3->line#1] -- zpby1=coby1 + lda #$8c sta line.y1 //SEG27 [10] phi (byte) line::x#0 = (byte) 10 [phi:main::@3->line#2] -- zpby1=coby1 lda #$a sta line.x - //SEG28 [10] phi (byte) line::x1#2 = (byte) 40 [phi:main::@3->line#3] -- zpby1=coby1 - lda #$28 + //SEG28 [10] phi (byte) line::x1#2 = (byte) 140 [phi:main::@3->line#3] -- zpby1=coby1 + lda #$8c sta line.x1 jsr line jmp breturn @@ -6030,191 +6030,200 @@ line: { //SEG58 plot plot: { .label _0 = 21 - .label _1 = 22 - .label _2 = 23 - .label _3 = 26 - .label _4 = 27 - .label _5 = 28 - .label _6 = 31 - .label _7 = 32 - .label _8 = 33 + .label _1 = 24 + .label _2 = 27 + .label _3 = 30 + .label _5 = 35 + .label _6 = 36 + .label _7 = 37 .label x = 18 .label y = 19 - .label plotter = 24 - .label plotter_2 = 29 - //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- zpby1=cowo1_staridx_zpby2 - ldx x - lda plot_xlo,x - sta _0 - //SEG60 [28] (byte~) plot::$1 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::$0 plot::$1 ] -- zpby1=cowo1_staridx_zpby2 - ldx y - lda plot_ylo,x - sta _1 - //SEG61 [29] (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::$2 ] -- zpby1=zpby2_plus_zpby3 - lda _0 - clc - adc _1 - sta _2 - //SEG62 [30] (byte*) plot::plotter#1 ← (const byte*) BITMAP#0 lo= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter#1 ] -- zpptrby1=cowo1_setlo_zpby1 - lda _2 - sta plotter - lda #>BITMAP - sta plotter+1 - //SEG63 [31] (byte~) plot::$3 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter#1 plot::$3 ] -- zpby1=cowo1_staridx_zpby2 + .label plotter_x = 22 + .label plotter_x_2 = 25 + .label plotter_y = 28 + .label plotter_y_2 = 31 + .label plotter = 33 + //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- zpby1=cowo1_staridx_zpby2 ldx x lda plot_xhi,x - sta _3 - //SEG64 [32] (byte~) plot::$4 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter#1 plot::$3 plot::$4 ] -- zpby1=cowo1_staridx_zpby2 + sta _0 + //SEG60 [28] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] -- zpptrby1=coby1_sethi_zpby1 + lda #<0 + sta plotter_x + lda _0 + sta plotter_x+1 + //SEG61 [29] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] -- zpby1=cowo1_staridx_zpby2 + ldx x + lda plot_xlo,x + sta _1 + //SEG62 [30] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] -- zpptrby1=zpptrby2_setlo_zpby1 + lda _1 + sta plotter_x_2 + lda plotter_x+1 + sta plotter_x_2+1 + //SEG63 [31] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] -- zpby1=cowo1_staridx_zpby2 ldx y lda plot_yhi,x - sta _4 - //SEG65 [33] (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 [ plot::x#0 plot::plotter#1 plot::$5 ] -- zpby1=zpby2_plus_zpby3 + sta _2 + //SEG64 [32] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] -- zpptrby1=coby1_sethi_zpby1 + lda #<0 + sta plotter_y + lda _2 + sta plotter_y+1 + //SEG65 [33] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] -- zpby1=cowo1_staridx_zpby2 + ldx y + lda plot_ylo,x + sta _3 + //SEG66 [34] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] -- zpptrby1=zpptrby2_setlo_zpby1 lda _3 + sta plotter_y_2 + lda plotter_y+1 + sta plotter_y_2+1 + //SEG67 [35] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] -- zpptrby1=zpptrby2_plus_zpptrby3 + lda plotter_x_2 clc - adc _4 - sta _5 - //SEG66 [34] (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 [ plot::x#0 plot::plotter#2 ] -- zpptrby1=zpptrby2_sethi_zpby1 - lda plotter - sta plotter_2 - lda _5 - sta plotter_2+1 - //SEG67 [35] (byte~) plot::$6 ← * (byte*) plot::plotter#2 [ plot::x#0 plot::plotter#2 plot::$6 ] -- zpby1=_star_zpptrby1 + adc plotter_y_2 + sta plotter + lda plotter_x_2+1 + adc plotter_y_2+1 + sta plotter+1 + //SEG68 [36] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#0 plot::plotter#0 plot::$5 ] -- zpby1=_star_zpptrby1 ldy #0 - lda (plotter_2),y - sta _6 - //SEG68 [36] (byte~) plot::$7 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#2 plot::$6 plot::$7 ] -- zpby1=cowo1_staridx_zpby2 + lda (plotter),y + sta _5 + //SEG69 [37] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 plot::$6 ] -- zpby1=cowo1_staridx_zpby2 ldx x lda plot_bit,x + sta _6 + //SEG70 [38] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ] -- zpby1=zpby2_bor_zpby3 + lda _5 + ora _6 sta _7 - //SEG69 [37] (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 [ plot::plotter#2 plot::$8 ] -- zpby1=zpby2_bor_zpby3 - lda _6 - ora _7 - sta _8 - //SEG70 [38] *((byte*) plot::plotter#2) ← (byte~) plot::$8 [ ] -- _star_zpptrby1=zpby1 + //SEG71 [39] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ] -- _star_zpptrby1=zpby1 ldy #0 - lda _8 - sta (plotter_2),y + lda _7 + sta (plotter),y jmp breturn - //SEG71 plot::@return + //SEG72 plot::@return breturn: - //SEG72 [39] return [ ] + //SEG73 [40] return [ ] rts } -//SEG73 initplottables +//SEG74 initplottables initplottables: { - .label _0 = 34 - .label _6 = 35 - .label _7 = 36 - .label _8 = 37 - .label _9 = 38 - .label _10 = 39 + .label _0 = 38 + .label _6 = 39 + .label _7 = 40 + .label _8 = 41 + .label _9 = 42 + .label _10 = 43 .label bit = 8 .label x = 7 .label y = 9 .label yoffs = 10 - //SEG74 [41] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] + //SEG75 [42] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] b1_from_initplottables: - //SEG75 [41] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- zpby1=coby1 + //SEG76 [42] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- zpby1=coby1 lda #$80 sta bit - //SEG76 [41] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- zpby1=coby1 + //SEG77 [42] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- zpby1=coby1 lda #0 sta x jmp b1 - //SEG77 [41] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] + //SEG78 [42] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] b1_from_b2: - //SEG78 [41] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy - //SEG79 [41] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy + //SEG79 [42] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy + //SEG80 [42] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy jmp b1 - //SEG80 initplottables::@1 + //SEG81 initplottables::@1 b1: - //SEG81 [42] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- zpby1=zpby2_band_coby1 + //SEG82 [43] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- zpby1=zpby2_band_coby1 lda x and #$f8 sta _0 - //SEG82 [43] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_zpby1=zpby2 + //SEG83 [44] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_zpby1=zpby2 lda _0 ldx x sta plot_xlo,x - //SEG83 [44] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_zpby1=coby2 + //SEG84 [45] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_zpby1=coby2 lda #>BITMAP ldx x sta plot_xhi,x - //SEG84 [45] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_zpby1=zpby2 + //SEG85 [46] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_zpby1=zpby2 lda bit ldx x sta plot_bit,x - //SEG85 [46] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- zpby1=zpby1_ror_1 + //SEG86 [47] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- zpby1=zpby1_ror_1 lsr sta bit - //SEG86 [47] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- zpby1_neq_0_then_la1 + //SEG87 [48] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- zpby1_neq_0_then_la1 lda bit bne b10 - //SEG87 [48] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] + //SEG88 [49] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] b2_from_b1: - //SEG88 [48] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- zpby1=coby1 + //SEG89 [49] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- zpby1=coby1 lda #$80 sta bit jmp b2 - //SEG89 initplottables::@2 + //SEG90 initplottables::@2 b2: - //SEG90 [49] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- zpby1=_inc_zpby1 + //SEG91 [50] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- zpby1=_inc_zpby1 inc x - //SEG91 [50] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- zpby1_neq_0_then_la1 + //SEG92 [51] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- zpby1_neq_0_then_la1 lda x bne b1_from_b2 - //SEG92 [51] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] + //SEG93 [52] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] b3_from_b2: - //SEG93 [51] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 + //SEG94 [52] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs lda #0 sta yoffs+1 - //SEG94 [51] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- zpby1=coby1 + //SEG95 [52] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- zpby1=coby1 lda #0 sta y jmp b3 - //SEG95 [51] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] + //SEG96 [52] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] b3_from_b4: - //SEG96 [51] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy - //SEG97 [51] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy + //SEG97 [52] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy + //SEG98 [52] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy jmp b3 - //SEG98 initplottables::@3 + //SEG99 initplottables::@3 b3: - //SEG99 [52] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=zpby2_band_coby1 + //SEG100 [53] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=zpby2_band_coby1 lda y and #7 sta _6 - //SEG100 [53] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- zpby1=_lo_zpptrby1 + //SEG101 [54] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- zpby1=_lo_zpptrby1 lda yoffs sta _7 - //SEG101 [54] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- zpby1=zpby2_bor_zpby3 + //SEG102 [55] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- zpby1=zpby2_bor_zpby3 lda _6 ora _7 sta _8 - //SEG102 [55] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_zpby1=zpby2 + //SEG103 [56] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_zpby1=zpby2 lda _8 ldx y sta plot_ylo,x - //SEG103 [56] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- zpby1=_hi_zpptrby1 + //SEG104 [57] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- zpby1=_hi_zpptrby1 lda yoffs+1 sta _9 - //SEG104 [57] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_zpby1=zpby2 + //SEG105 [58] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_zpby1=zpby2 lda _9 ldx y sta plot_yhi,x - //SEG105 [58] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- zpby1=zpby2_band_coby1 + //SEG106 [59] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- zpby1=zpby2_band_coby1 lda y and #7 sta _10 - //SEG106 [59] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- zpby1_neq_coby1_then_la1 + //SEG107 [60] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- zpby1_neq_coby1_then_la1 lda _10 cmp #7 bne b4_from_b3 jmp b7 - //SEG107 initplottables::@7 + //SEG108 initplottables::@7 b7: - //SEG108 [60] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 + //SEG109 [61] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -6222,88 +6231,88 @@ initplottables: { lda yoffs+1 adc #>$140 sta yoffs+1 - //SEG109 [61] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] + //SEG110 [62] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] b4_from_b3: b4_from_b7: - //SEG110 [61] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy + //SEG111 [62] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy jmp b4 - //SEG111 initplottables::@4 + //SEG112 initplottables::@4 b4: - //SEG112 [62] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- zpby1=_inc_zpby1 + //SEG113 [63] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- zpby1=_inc_zpby1 inc y - //SEG113 [63] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- zpby1_neq_0_then_la1 + //SEG114 [64] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- zpby1_neq_0_then_la1 lda y bne b3_from_b4 jmp breturn - //SEG114 initplottables::@return + //SEG115 initplottables::@return breturn: - //SEG115 [64] return [ ] + //SEG116 [65] return [ ] rts - //SEG116 initplottables::@10 + //SEG117 initplottables::@10 b10: - //SEG117 [48] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] + //SEG118 [49] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] b2_from_b10: - //SEG118 [48] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy + //SEG119 [49] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy jmp b2 } -//SEG119 initscreen +//SEG120 initscreen initscreen: { .label b = 12 .label c = 14 - //SEG120 [66] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG121 [67] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] b1_from_initscreen: - //SEG121 [66] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 + //SEG122 [67] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 lda #BITMAP sta b+1 jmp b1 - //SEG122 [66] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG123 [67] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] b1_from_b1: - //SEG123 [66] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy + //SEG124 [67] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy jmp b1 - //SEG124 initscreen::@1 + //SEG125 initscreen::@1 b1: - //SEG125 [67] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 + //SEG126 [68] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #0 sta (b),y - //SEG126 [68] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG127 [69] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 inc b bne !+ inc b+1 !: - //SEG127 [69] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG128 [70] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 lda b cmp #initscreen::@2] + //SEG129 [71] phi from initscreen::@1 to initscreen::@2 [phi:initscreen::@1->initscreen::@2] b2_from_b1: - //SEG129 [70] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 + //SEG130 [71] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 lda #SCREEN sta c+1 jmp b2 - //SEG130 [70] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] + //SEG131 [71] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] b2_from_b2: - //SEG131 [70] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy + //SEG132 [71] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy jmp b2 - //SEG132 initscreen::@2 + //SEG133 initscreen::@2 b2: - //SEG133 [71] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 + //SEG134 [72] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y - //SEG134 [72] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG135 [73] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 inc c bne !+ inc c+1 !: - //SEG135 [73] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG136 [74] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -6311,9 +6320,9 @@ initscreen: { cmp #(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] always clobbers reg byte a -Statement [45] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] always clobbers reg byte a -Statement [52] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] always clobbers reg byte a +Statement [45] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] always clobbers reg byte a +Statement [46] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] always clobbers reg byte a +Statement [53] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ initplottables::y#2 initplottables::y#1 ] -Statement [53] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ initplottables::$6 ] -Statement [54] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] always clobbers reg byte a -Statement [56] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] always clobbers reg byte a -Statement [58] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] always clobbers reg byte a -Statement [60] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] always clobbers reg byte a -Statement [67] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] always clobbers reg byte a reg byte y -Statement [69] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] always clobbers reg byte a -Statement [71] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] always clobbers reg byte a reg byte y -Statement [73] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] always clobbers reg byte a +Statement [54] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ initplottables::$6 ] +Statement [55] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] always clobbers reg byte a +Statement [57] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] always clobbers reg byte a +Statement [59] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] always clobbers reg byte a +Statement [61] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] always clobbers reg byte a +Statement [68] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] always clobbers reg byte a reg byte y +Statement [70] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] always clobbers reg byte a +Statement [72] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] always clobbers reg byte a reg byte y +Statement [74] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] always clobbers reg byte a Statement [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] always clobbers reg byte a Statement [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] always clobbers reg byte a Statement [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] always clobbers reg byte a @@ -6370,27 +6380,26 @@ Statement [12] (byte) line::yd#0 ← (byte) line::y1#2 - (byte) line::y#0 [ line Statement [13] (byte) line::e#0 ← (byte) line::yd#0 >> (byte) 1 [ line::x1#2 line::x#0 line::y#0 line::xd#0 line::yd#0 line::e#0 ] always clobbers reg byte a Statement [19] (byte) line::e#1 ← (byte) line::e#3 + (byte) line::yd#0 [ line::x1#2 line::xd#0 line::yd#0 line::y#2 line::x#1 line::e#1 ] always clobbers reg byte a Statement [22] (byte) line::e#2 ← (byte) line::e#1 - (byte) line::xd#0 [ line::x1#2 line::xd#0 line::yd#0 line::x#1 line::y#1 line::e#2 ] always clobbers reg byte a -Statement [30] (byte*) plot::plotter#1 ← (const byte*) BITMAP#0 lo= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter#1 ] always clobbers reg byte a -Statement [34] (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 [ plot::x#0 plot::plotter#2 ] always clobbers reg byte a -Statement [35] (byte~) plot::$6 ← * (byte*) plot::plotter#2 [ plot::x#0 plot::plotter#2 plot::$6 ] always clobbers reg byte a reg byte y -Statement [38] *((byte*) plot::plotter#2) ← (byte~) plot::$8 [ ] always clobbers reg byte y -Statement [42] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] always clobbers reg byte a -Statement [44] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] always clobbers reg byte a -Statement [45] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] always clobbers reg byte a -Statement [52] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] always clobbers reg byte a -Statement [53] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] always clobbers reg byte a -Statement [54] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] always clobbers reg byte a -Statement [56] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] always clobbers reg byte a -Statement [58] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] always clobbers reg byte a -Statement [60] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] always clobbers reg byte a -Statement [67] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] always clobbers reg byte a reg byte y -Statement [69] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] always clobbers reg byte a -Statement [71] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] always clobbers reg byte a reg byte y -Statement [73] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] always clobbers reg byte a -Equivalence Class zp ZP_BYTE:22 [ plot::$1 ] has ALU potential. -Equivalence Class zp ZP_BYTE:27 [ plot::$4 ] has ALU potential. -Equivalence Class zp ZP_BYTE:32 [ plot::$7 ] has ALU potential. -Equivalence Class zp ZP_BYTE:36 [ initplottables::$7 ] has ALU potential. +Statement [30] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] always clobbers reg byte a +Statement [34] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] always clobbers reg byte a +Statement [35] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] always clobbers reg byte a +Statement [36] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#0 plot::plotter#0 plot::$5 ] always clobbers reg byte a reg byte y +Statement [39] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ] always clobbers reg byte y +Statement [43] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] always clobbers reg byte a +Statement [45] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] always clobbers reg byte a +Statement [46] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] always clobbers reg byte a +Statement [53] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] always clobbers reg byte a +Statement [54] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] always clobbers reg byte a +Statement [55] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] always clobbers reg byte a +Statement [57] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] always clobbers reg byte a +Statement [59] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] always clobbers reg byte a +Statement [61] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] always clobbers reg byte a +Statement [68] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] always clobbers reg byte a reg byte y +Statement [70] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] always clobbers reg byte a +Statement [72] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] always clobbers reg byte a reg byte y +Statement [74] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] always clobbers reg byte a +Equivalence Class zp ZP_BYTE:36 [ plot::$6 ] has ALU potential. +Equivalence Class zp ZP_BYTE:40 [ initplottables::$7 ] has ALU potential. REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp ZP_BYTE:2 [ line::x1#2 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ line::y1#2 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , @@ -6409,81 +6418,79 @@ Potential registers zp ZP_BYTE:18 [ plot::x#0 ] : zp ZP_BYTE:18 , reg byte x , Potential registers zp ZP_BYTE:19 [ plot::y#0 ] : zp ZP_BYTE:19 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:20 [ line::$10 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:21 [ plot::$0 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:22 [ plot::$1 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:23 [ plot::$2 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_PTR_BYTE:24 [ plot::plotter#1 ] : zp ZP_PTR_BYTE:24 , -Potential registers zp ZP_BYTE:26 [ plot::$3 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:27 [ plot::$4 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:28 [ plot::$5 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_PTR_BYTE:29 [ plot::plotter#2 ] : zp ZP_PTR_BYTE:29 , -Potential registers zp ZP_BYTE:31 [ plot::$6 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:32 [ plot::$7 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:33 [ plot::$8 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:34 [ initplottables::$0 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:35 [ initplottables::$6 ] : zp ZP_BYTE:35 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:36 [ initplottables::$7 ] : zp ZP_BYTE:36 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:37 [ initplottables::$8 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:38 [ initplottables::$9 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:39 [ initplottables::$10 ] : zp ZP_BYTE:39 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_PTR_BYTE:22 [ plot::plotter_x#1 ] : zp ZP_PTR_BYTE:22 , +Potential registers zp ZP_BYTE:24 [ plot::$1 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_PTR_BYTE:25 [ plot::plotter_x#2 ] : zp ZP_PTR_BYTE:25 , +Potential registers zp ZP_BYTE:27 [ plot::$2 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_PTR_BYTE:28 [ plot::plotter_y#1 ] : zp ZP_PTR_BYTE:28 , +Potential registers zp ZP_BYTE:30 [ plot::$3 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_PTR_BYTE:31 [ plot::plotter_y#2 ] : zp ZP_PTR_BYTE:31 , +Potential registers zp ZP_PTR_BYTE:33 [ plot::plotter#0 ] : zp ZP_PTR_BYTE:33 , +Potential registers zp ZP_BYTE:35 [ plot::$5 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:36 [ plot::$6 ] : zp ZP_BYTE:36 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:37 [ plot::$7 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:38 [ initplottables::$0 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:39 [ initplottables::$6 ] : zp ZP_BYTE:39 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:40 [ initplottables::$7 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:41 [ initplottables::$8 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:42 [ initplottables::$9 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:43 [ initplottables::$10 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [initplottables] 46.93: zp ZP_BYTE:8 [ initplottables::bit#3 initplottables::bit#4 initplottables::bit#1 ] 39.11: zp ZP_PTR_BYTE:10 [ initplottables::yoffs#2 initplottables::yoffs#4 initplottables::yoffs#1 ] 24.75: zp ZP_BYTE:7 [ initplottables::x#2 initplottables::x#1 ] 22.5: zp ZP_BYTE:9 [ initplottables::y#2 initplottables::y#1 ] 22: zp ZP_BYTE:34 [ initplottables::$0 ] 22: zp ZP_BYTE:36 [ initplottables::$7 ] 22: zp ZP_BYTE:37 [ initplottables::$8 ] 22: zp ZP_BYTE:38 [ initplottables::$9 ] 22: zp ZP_BYTE:39 [ initplottables::$10 ] 11: zp ZP_BYTE:35 [ initplottables::$6 ] +Uplift Scope [initplottables] 46.93: zp ZP_BYTE:8 [ initplottables::bit#3 initplottables::bit#4 initplottables::bit#1 ] 39.11: zp ZP_PTR_BYTE:10 [ initplottables::yoffs#2 initplottables::yoffs#4 initplottables::yoffs#1 ] 24.75: zp ZP_BYTE:7 [ initplottables::x#2 initplottables::x#1 ] 22.5: zp ZP_BYTE:9 [ initplottables::y#2 initplottables::y#1 ] 22: zp ZP_BYTE:38 [ initplottables::$0 ] 22: zp ZP_BYTE:40 [ initplottables::$7 ] 22: zp ZP_BYTE:41 [ initplottables::$8 ] 22: zp ZP_BYTE:42 [ initplottables::$9 ] 22: zp ZP_BYTE:43 [ initplottables::$10 ] 11: zp ZP_BYTE:39 [ initplottables::$6 ] Uplift Scope [line] 56.47: zp ZP_BYTE:6 [ line::e#3 line::e#0 line::e#6 line::e#2 line::e#1 ] 29.57: zp ZP_BYTE:5 [ line::y#2 line::y#0 line::y#4 line::y#1 ] 22: zp ZP_BYTE:20 [ line::$10 ] 13.88: zp ZP_BYTE:4 [ line::x#2 line::x#0 line::x#1 ] 1.6: zp ZP_BYTE:16 [ line::xd#0 ] 1.07: zp ZP_BYTE:17 [ line::yd#0 ] 1: zp ZP_BYTE:3 [ line::y1#2 ] 0.81: zp ZP_BYTE:2 [ line::x1#2 ] Uplift Scope [initscreen] 33: zp ZP_PTR_BYTE:12 [ initscreen::b#2 initscreen::b#1 ] 33: zp ZP_PTR_BYTE:14 [ initscreen::c#2 initscreen::c#1 ] -Uplift Scope [plot] 4: zp ZP_BYTE:22 [ plot::$1 ] 4: zp ZP_BYTE:23 [ plot::$2 ] 4: zp ZP_BYTE:27 [ plot::$4 ] 4: zp ZP_BYTE:28 [ plot::$5 ] 4: zp ZP_BYTE:32 [ plot::$7 ] 4: zp ZP_BYTE:33 [ plot::$8 ] 2.5: zp ZP_BYTE:19 [ plot::y#0 ] 2: zp ZP_BYTE:21 [ plot::$0 ] 2: zp ZP_BYTE:26 [ plot::$3 ] 2: zp ZP_BYTE:31 [ plot::$6 ] 1.55: zp ZP_BYTE:18 [ plot::x#0 ] 1.5: zp ZP_PTR_BYTE:29 [ plot::plotter#2 ] 1: zp ZP_PTR_BYTE:24 [ plot::plotter#1 ] +Uplift Scope [plot] 4: zp ZP_BYTE:21 [ plot::$0 ] 4: zp ZP_BYTE:24 [ plot::$1 ] 4: zp ZP_BYTE:27 [ plot::$2 ] 4: zp ZP_BYTE:30 [ plot::$3 ] 4: zp ZP_PTR_BYTE:31 [ plot::plotter_y#2 ] 4: zp ZP_BYTE:36 [ plot::$6 ] 4: zp ZP_BYTE:37 [ plot::$7 ] 2.14: zp ZP_BYTE:19 [ plot::y#0 ] 2: zp ZP_PTR_BYTE:22 [ plot::plotter_x#1 ] 2: zp ZP_PTR_BYTE:28 [ plot::plotter_y#1 ] 2: zp ZP_BYTE:35 [ plot::$5 ] 1.5: zp ZP_PTR_BYTE:33 [ plot::plotter#0 ] 1.42: zp ZP_BYTE:18 [ plot::x#0 ] 0.8: zp ZP_PTR_BYTE:25 [ plot::plotter_x#2 ] Uplift Scope [main] Uplift Scope [] Uplift attempts [initplottables] 10000/103680 (limiting to 10000) -Uplifting [initplottables] best 3847 combination reg byte y [ initplottables::bit#3 initplottables::bit#4 initplottables::bit#1 ] zp ZP_PTR_BYTE:10 [ initplottables::yoffs#2 initplottables::yoffs#4 initplottables::yoffs#1 ] reg byte x [ initplottables::x#2 initplottables::x#1 ] reg byte x [ initplottables::y#2 initplottables::y#1 ] reg byte a [ initplottables::$0 ] reg byte a [ initplottables::$7 ] reg byte a [ initplottables::$8 ] reg byte a [ initplottables::$9 ] zp ZP_BYTE:39 [ initplottables::$10 ] zp ZP_BYTE:35 [ initplottables::$6 ] +Uplifting [initplottables] best 3868 combination reg byte y [ initplottables::bit#3 initplottables::bit#4 initplottables::bit#1 ] zp ZP_PTR_BYTE:10 [ initplottables::yoffs#2 initplottables::yoffs#4 initplottables::yoffs#1 ] reg byte x [ initplottables::x#2 initplottables::x#1 ] reg byte x [ initplottables::y#2 initplottables::y#1 ] reg byte a [ initplottables::$0 ] reg byte a [ initplottables::$7 ] reg byte a [ initplottables::$8 ] reg byte a [ initplottables::$9 ] zp ZP_BYTE:43 [ initplottables::$10 ] zp ZP_BYTE:39 [ initplottables::$6 ] Limited combination testing to 10000 combinations of 103680 possible. -Uplifting [line] best 3780 combination zp ZP_BYTE:6 [ line::e#3 line::e#0 line::e#6 line::e#2 line::e#1 ] zp ZP_BYTE:5 [ line::y#2 line::y#0 line::y#4 line::y#1 ] reg byte a [ line::$10 ] zp ZP_BYTE:4 [ line::x#2 line::x#0 line::x#1 ] zp ZP_BYTE:16 [ line::xd#0 ] zp ZP_BYTE:17 [ line::yd#0 ] reg byte x [ line::y1#2 ] zp ZP_BYTE:2 [ line::x1#2 ] -Uplifting [initscreen] best 3780 combination zp ZP_PTR_BYTE:12 [ initscreen::b#2 initscreen::b#1 ] zp ZP_PTR_BYTE:14 [ initscreen::c#2 initscreen::c#1 ] -Uplift attempts [plot] 10000/3072000 (limiting to 10000) -Uplifting [plot] best 3744 combination reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] reg byte a [ plot::$4 ] reg byte a [ plot::$5 ] reg byte a [ plot::$7 ] reg byte a [ plot::$8 ] zp ZP_BYTE:19 [ plot::y#0 ] zp ZP_BYTE:21 [ plot::$0 ] zp ZP_BYTE:26 [ plot::$3 ] zp ZP_BYTE:31 [ plot::$6 ] zp ZP_BYTE:18 [ plot::x#0 ] zp ZP_PTR_BYTE:29 [ plot::plotter#2 ] zp ZP_PTR_BYTE:24 [ plot::plotter#1 ] -Limited combination testing to 10000 combinations of 3072000 possible. -Uplifting [main] best 3744 combination -Uplifting [] best 3744 combination +Uplifting [line] best 3801 combination zp ZP_BYTE:6 [ line::e#3 line::e#0 line::e#6 line::e#2 line::e#1 ] zp ZP_BYTE:5 [ line::y#2 line::y#0 line::y#4 line::y#1 ] reg byte a [ line::$10 ] zp ZP_BYTE:4 [ line::x#2 line::x#0 line::x#1 ] zp ZP_BYTE:16 [ line::xd#0 ] zp ZP_BYTE:17 [ line::yd#0 ] reg byte x [ line::y1#2 ] zp ZP_BYTE:2 [ line::x1#2 ] +Uplifting [initscreen] best 3801 combination zp ZP_PTR_BYTE:12 [ initscreen::b#2 initscreen::b#1 ] zp ZP_PTR_BYTE:14 [ initscreen::c#2 initscreen::c#1 ] +Uplift attempts [plot] 10000/122880 (limiting to 10000) +Uplifting [plot] best 3765 combination reg byte a [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] reg byte a [ plot::$3 ] zp ZP_PTR_BYTE:31 [ plot::plotter_y#2 ] reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] zp ZP_BYTE:19 [ plot::y#0 ] zp ZP_PTR_BYTE:22 [ plot::plotter_x#1 ] zp ZP_PTR_BYTE:28 [ plot::plotter_y#1 ] zp ZP_BYTE:35 [ plot::$5 ] zp ZP_PTR_BYTE:33 [ plot::plotter#0 ] zp ZP_BYTE:18 [ plot::x#0 ] zp ZP_PTR_BYTE:25 [ plot::plotter_x#2 ] +Limited combination testing to 10000 combinations of 122880 possible. +Uplifting [main] best 3765 combination +Uplifting [] best 3765 combination Attempting to uplift remaining variables inzp ZP_BYTE:6 [ line::e#3 line::e#0 line::e#6 line::e#2 line::e#1 ] -Uplifting [line] best 3744 combination zp ZP_BYTE:6 [ line::e#3 line::e#0 line::e#6 line::e#2 line::e#1 ] +Uplifting [line] best 3765 combination zp ZP_BYTE:6 [ line::e#3 line::e#0 line::e#6 line::e#2 line::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ line::y#2 line::y#0 line::y#4 line::y#1 ] -Uplifting [line] best 3744 combination zp ZP_BYTE:5 [ line::y#2 line::y#0 line::y#4 line::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:39 [ initplottables::$10 ] -Uplifting [initplottables] best 3684 combination reg byte a [ initplottables::$10 ] +Uplifting [line] best 3765 combination zp ZP_BYTE:5 [ line::y#2 line::y#0 line::y#4 line::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:43 [ initplottables::$10 ] +Uplifting [initplottables] best 3705 combination reg byte a [ initplottables::$10 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ line::x#2 line::x#0 line::x#1 ] -Uplifting [line] best 3684 combination zp ZP_BYTE:4 [ line::x#2 line::x#0 line::x#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:35 [ initplottables::$6 ] -Uplifting [initplottables] best 3684 combination zp ZP_BYTE:35 [ initplottables::$6 ] +Uplifting [line] best 3705 combination zp ZP_BYTE:4 [ line::x#2 line::x#0 line::x#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:39 [ initplottables::$6 ] +Uplifting [initplottables] best 3705 combination zp ZP_BYTE:39 [ initplottables::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ plot::y#0 ] -Uplifting [plot] best 3648 combination reg byte y [ plot::y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:21 [ plot::$0 ] -Uplifting [plot] best 3648 combination zp ZP_BYTE:21 [ plot::$0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:26 [ plot::$3 ] -Uplifting [plot] best 3648 combination zp ZP_BYTE:26 [ plot::$3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:31 [ plot::$6 ] -Uplifting [plot] best 3648 combination zp ZP_BYTE:31 [ plot::$6 ] +Uplifting [plot] best 3669 combination reg byte y [ plot::y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:35 [ plot::$5 ] +Uplifting [plot] best 3669 combination zp ZP_BYTE:35 [ plot::$5 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ line::xd#0 ] -Uplifting [line] best 3648 combination zp ZP_BYTE:16 [ line::xd#0 ] +Uplifting [line] best 3669 combination zp ZP_BYTE:16 [ line::xd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ plot::x#0 ] -Uplifting [plot] best 3609 combination reg byte x [ plot::x#0 ] +Uplifting [plot] best 3630 combination reg byte x [ plot::x#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ line::yd#0 ] -Uplifting [line] best 3609 combination zp ZP_BYTE:17 [ line::yd#0 ] +Uplifting [line] best 3630 combination zp ZP_BYTE:17 [ line::yd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ line::x1#2 ] -Uplifting [line] best 3609 combination zp ZP_BYTE:2 [ line::x1#2 ] -Coalescing zero page register [ zp ZP_BYTE:2 [ line::x1#2 ] ] with [ zp ZP_BYTE:35 [ initplottables::$6 ] ] +Uplifting [line] best 3630 combination zp ZP_BYTE:2 [ line::x1#2 ] +Coalescing zero page register [ zp ZP_BYTE:2 [ line::x1#2 ] ] with [ zp ZP_BYTE:39 [ initplottables::$6 ] ] Coalescing zero page register [ zp ZP_PTR_BYTE:10 [ initplottables::yoffs#2 initplottables::yoffs#4 initplottables::yoffs#1 ] ] with [ zp ZP_PTR_BYTE:12 [ initscreen::b#2 initscreen::b#1 ] ] Coalescing zero page register [ zp ZP_PTR_BYTE:10 [ initplottables::yoffs#2 initplottables::yoffs#4 initplottables::yoffs#1 initscreen::b#2 initscreen::b#1 ] ] with [ zp ZP_PTR_BYTE:14 [ initscreen::c#2 initscreen::c#1 ] ] -Coalescing zero page register [ zp ZP_PTR_BYTE:10 [ initplottables::yoffs#2 initplottables::yoffs#4 initplottables::yoffs#1 initscreen::b#2 initscreen::b#1 initscreen::c#2 initscreen::c#1 ] ] with [ zp ZP_PTR_BYTE:24 [ plot::plotter#1 ] ] -Coalescing zero page register [ zp ZP_PTR_BYTE:10 [ initplottables::yoffs#2 initplottables::yoffs#4 initplottables::yoffs#1 initscreen::b#2 initscreen::b#1 initscreen::c#2 initscreen::c#1 plot::plotter#1 ] ] with [ zp ZP_PTR_BYTE:29 [ plot::plotter#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:21 [ plot::$0 ] ] with [ zp ZP_BYTE:26 [ plot::$3 ] ] -Coalescing zero page register [ zp ZP_BYTE:21 [ plot::$0 plot::$3 ] ] with [ zp ZP_BYTE:31 [ plot::$6 ] ] +Coalescing zero page register [ zp ZP_PTR_BYTE:10 [ initplottables::yoffs#2 initplottables::yoffs#4 initplottables::yoffs#1 initscreen::b#2 initscreen::b#1 initscreen::c#2 initscreen::c#1 ] ] with [ zp ZP_PTR_BYTE:22 [ plot::plotter_x#1 ] ] +Coalescing zero page register [ zp ZP_PTR_BYTE:10 [ initplottables::yoffs#2 initplottables::yoffs#4 initplottables::yoffs#1 initscreen::b#2 initscreen::b#1 initscreen::c#2 initscreen::c#1 plot::plotter_x#1 ] ] with [ zp ZP_PTR_BYTE:25 [ plot::plotter_x#2 ] ] +Coalescing zero page register [ zp ZP_PTR_BYTE:10 [ initplottables::yoffs#2 initplottables::yoffs#4 initplottables::yoffs#1 initscreen::b#2 initscreen::b#1 initscreen::c#2 initscreen::c#1 plot::plotter_x#1 plot::plotter_x#2 ] ] with [ zp ZP_PTR_BYTE:33 [ plot::plotter#0 ] ] +Coalescing zero page register [ zp ZP_PTR_BYTE:28 [ plot::plotter_y#1 ] ] with [ zp ZP_PTR_BYTE:31 [ plot::plotter_y#2 ] ] Allocated (was zp ZP_BYTE:4) zp ZP_BYTE:3 [ line::x#2 line::x#0 line::x#1 ] Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ line::y#2 line::y#0 line::y#4 line::y#1 ] Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:5 [ line::e#3 line::e#0 line::e#6 line::e#2 line::e#1 ] -Allocated (was zp ZP_PTR_BYTE:10) zp ZP_PTR_BYTE:6 [ initplottables::yoffs#2 initplottables::yoffs#4 initplottables::yoffs#1 initscreen::b#2 initscreen::b#1 initscreen::c#2 initscreen::c#1 plot::plotter#1 plot::plotter#2 ] +Allocated (was zp ZP_PTR_BYTE:10) zp ZP_PTR_BYTE:6 [ initplottables::yoffs#2 initplottables::yoffs#4 initplottables::yoffs#1 initscreen::b#2 initscreen::b#1 initscreen::c#2 initscreen::c#1 plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ] Allocated (was zp ZP_BYTE:16) zp ZP_BYTE:8 [ line::xd#0 ] Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:9 [ line::yd#0 ] -Allocated (was zp ZP_BYTE:21) zp ZP_BYTE:10 [ plot::$0 plot::$3 plot::$6 ] +Allocated (was zp ZP_PTR_BYTE:28) zp ZP_PTR_BYTE:10 [ plot::plotter_y#1 plot::plotter_y#2 ] +Allocated (was zp ZP_BYTE:35) zp ZP_BYTE:12 [ plot::$5 ] Removing instruction jmp b5 Removing instruction jmp bend Removing instruction jmp b1 @@ -6552,13 +6559,13 @@ main: { lda #$18 sta D018 //SEG10 [5] call initscreen param-assignment [ ] - //SEG11 [65] phi from main to initscreen [phi:main->initscreen] + //SEG11 [66] phi from main to initscreen [phi:main->initscreen] initscreen_from_main: jsr initscreen //SEG12 main::@1 b1: //SEG13 [6] call initplottables param-assignment [ ] - //SEG14 [40] phi from main::@1 to initplottables [phi:main::@1->initplottables] + //SEG14 [41] phi from main::@1 to initplottables [phi:main::@1->initplottables] initplottables_from_b1: jsr initplottables //SEG15 main::@2 @@ -6569,13 +6576,13 @@ main: { //SEG18 [10] phi (byte) line::y#0 = (byte) 0 [phi:main::@2->line#0] -- zpby1=coby1 lda #0 sta line.y - //SEG19 [10] phi (byte) line::y1#2 = (byte) 10 [phi:main::@2->line#1] -- xby=coby1 - ldx #$a + //SEG19 [10] phi (byte) line::y1#2 = (byte) 100 [phi:main::@2->line#1] -- xby=coby1 + ldx #$64 //SEG20 [10] phi (byte) line::x#0 = (byte) 0 [phi:main::@2->line#2] -- zpby1=coby1 lda #0 sta line.x - //SEG21 [10] phi (byte) line::x1#2 = (byte) 20 [phi:main::@2->line#3] -- zpby1=coby1 - lda #$14 + //SEG21 [10] phi (byte) line::x1#2 = (byte) 200 [phi:main::@2->line#3] -- zpby1=coby1 + lda #$c8 sta line.x1 jsr line //SEG22 main::@3 @@ -6586,13 +6593,13 @@ main: { //SEG25 [10] phi (byte) line::y#0 = (byte) 20 [phi:main::@3->line#0] -- zpby1=coby1 lda #$14 sta line.y - //SEG26 [10] phi (byte) line::y1#2 = (byte) 40 [phi:main::@3->line#1] -- xby=coby1 - ldx #$28 + //SEG26 [10] phi (byte) line::y1#2 = (byte) 140 [phi:main::@3->line#1] -- xby=coby1 + ldx #$8c //SEG27 [10] phi (byte) line::x#0 = (byte) 10 [phi:main::@3->line#2] -- zpby1=coby1 lda #$a sta line.x - //SEG28 [10] phi (byte) line::x1#2 = (byte) 40 [phi:main::@3->line#3] -- zpby1=coby1 - lda #$28 + //SEG28 [10] phi (byte) line::x1#2 = (byte) 140 [phi:main::@3->line#3] -- zpby1=coby1 + lda #$8c sta line.x1 jsr line //SEG29 main::@return @@ -6679,133 +6686,139 @@ line: { } //SEG58 plot plot: { - .label _0 = 10 - .label _3 = 10 - .label _6 = 10 + .label _5 = 12 + .label plotter_x = 6 + .label plotter_y = 10 .label plotter = 6 - //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- zpby1=cowo1_staridx_xby - lda plot_xlo,x - sta _0 - //SEG60 [28] (byte~) plot::$1 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::$0 plot::$1 ] -- aby=cowo1_staridx_yby - lda plot_ylo,y - //SEG61 [29] (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::$2 ] -- aby=zpby1_plus_aby - clc - adc _0 - //SEG62 [30] (byte*) plot::plotter#1 ← (const byte*) BITMAP#0 lo= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter#1 ] -- zpptrby1=cowo1_setlo_aby - sta plotter - lda #>BITMAP - sta plotter+1 - //SEG63 [31] (byte~) plot::$3 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter#1 plot::$3 ] -- zpby1=cowo1_staridx_xby + //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- aby=cowo1_staridx_xby lda plot_xhi,x - sta _3 - //SEG64 [32] (byte~) plot::$4 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter#1 plot::$3 plot::$4 ] -- aby=cowo1_staridx_yby + //SEG60 [28] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] -- zpptrby1=coby1_sethi_aby + sta plotter_x+1 + lda #<0 + sta plotter_x + //SEG61 [29] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] -- aby=cowo1_staridx_xby + lda plot_xlo,x + //SEG62 [30] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] -- zpptrby1=zpptrby1_setlo_aby + sta plotter_x + //SEG63 [31] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] -- aby=cowo1_staridx_yby lda plot_yhi,y - //SEG65 [33] (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 [ plot::x#0 plot::plotter#1 plot::$5 ] -- aby=zpby1_plus_aby + //SEG64 [32] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] -- zpptrby1=coby1_sethi_aby + sta plotter_y+1 + lda #<0 + sta plotter_y + //SEG65 [33] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] -- aby=cowo1_staridx_yby + lda plot_ylo,y + //SEG66 [34] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] -- zpptrby1=zpptrby1_setlo_aby + sta plotter_y + //SEG67 [35] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] -- zpptrby1=zpptrby1_plus_zpptrby2 + lda plotter clc - adc _3 - //SEG66 [34] (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 [ plot::x#0 plot::plotter#2 ] -- zpptrby1=zpptrby1_sethi_aby + adc plotter_y + sta plotter + lda plotter+1 + adc plotter_y+1 sta plotter+1 - //SEG67 [35] (byte~) plot::$6 ← * (byte*) plot::plotter#2 [ plot::x#0 plot::plotter#2 plot::$6 ] -- zpby1=_star_zpptrby1 + //SEG68 [36] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#0 plot::plotter#0 plot::$5 ] -- zpby1=_star_zpptrby1 ldy #0 lda (plotter),y - sta _6 - //SEG68 [36] (byte~) plot::$7 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#2 plot::$6 plot::$7 ] -- aby=cowo1_staridx_xby + sta _5 + //SEG69 [37] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 plot::$6 ] -- aby=cowo1_staridx_xby lda plot_bit,x - //SEG69 [37] (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 [ plot::plotter#2 plot::$8 ] -- aby=zpby1_bor_aby - ora _6 - //SEG70 [38] *((byte*) plot::plotter#2) ← (byte~) plot::$8 [ ] -- _star_zpptrby1=aby + //SEG70 [38] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ] -- aby=zpby1_bor_aby + ora _5 + //SEG71 [39] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ] -- _star_zpptrby1=aby ldy #0 sta (plotter),y - //SEG71 plot::@return + //SEG72 plot::@return breturn: - //SEG72 [39] return [ ] + //SEG73 [40] return [ ] rts } -//SEG73 initplottables +//SEG74 initplottables initplottables: { .label _6 = 2 .label yoffs = 6 - //SEG74 [41] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] + //SEG75 [42] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] b1_from_initplottables: - //SEG75 [41] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- yby=coby1 + //SEG76 [42] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- yby=coby1 ldy #$80 - //SEG76 [41] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- xby=coby1 + //SEG77 [42] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- xby=coby1 ldx #0 jmp b1 - //SEG77 [41] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] + //SEG78 [42] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] b1_from_b2: - //SEG78 [41] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy - //SEG79 [41] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy - //SEG80 initplottables::@1 + //SEG79 [42] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy + //SEG80 [42] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy + //SEG81 initplottables::@1 b1: - //SEG81 [42] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- aby=xby_band_coby1 + //SEG82 [43] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- aby=xby_band_coby1 txa and #$f8 - //SEG82 [43] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=aby + //SEG83 [44] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=aby sta plot_xlo,x - //SEG83 [44] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=coby2 + //SEG84 [45] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=coby2 lda #>BITMAP sta plot_xhi,x - //SEG84 [45] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=yby + //SEG85 [46] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=yby tya sta plot_bit,x - //SEG85 [46] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- yby=yby_ror_1 + //SEG86 [47] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- yby=yby_ror_1 tya lsr tay - //SEG86 [47] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- yby_neq_0_then_la1 + //SEG87 [48] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- yby_neq_0_then_la1 cpy #0 bne b10 - //SEG87 [48] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] + //SEG88 [49] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] b2_from_b1: - //SEG88 [48] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- yby=coby1 + //SEG89 [49] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- yby=coby1 ldy #$80 - //SEG89 initplottables::@2 + //SEG90 initplottables::@2 b2: - //SEG90 [49] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- xby=_inc_xby + //SEG91 [50] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- xby=_inc_xby inx - //SEG91 [50] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- xby_neq_0_then_la1 + //SEG92 [51] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- xby_neq_0_then_la1 cpx #0 bne b1_from_b2 - //SEG92 [51] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] + //SEG93 [52] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] b3_from_b2: - //SEG93 [51] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 + //SEG94 [52] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs lda #0 sta yoffs+1 - //SEG94 [51] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- xby=coby1 + //SEG95 [52] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- xby=coby1 ldx #0 jmp b3 - //SEG95 [51] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] + //SEG96 [52] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] b3_from_b4: - //SEG96 [51] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy - //SEG97 [51] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy - //SEG98 initplottables::@3 + //SEG97 [52] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy + //SEG98 [52] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy + //SEG99 initplottables::@3 b3: - //SEG99 [52] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=xby_band_coby1 + //SEG100 [53] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=xby_band_coby1 txa and #7 sta _6 - //SEG100 [53] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- aby=_lo_zpptrby1 + //SEG101 [54] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- aby=_lo_zpptrby1 lda yoffs - //SEG101 [54] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- aby=zpby1_bor_aby + //SEG102 [55] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- aby=zpby1_bor_aby ora _6 - //SEG102 [55] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby + //SEG103 [56] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby sta plot_ylo,x - //SEG103 [56] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- aby=_hi_zpptrby1 + //SEG104 [57] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- aby=_hi_zpptrby1 lda yoffs+1 - //SEG104 [57] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby + //SEG105 [58] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby sta plot_yhi,x - //SEG105 [58] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- aby=xby_band_coby1 + //SEG106 [59] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- aby=xby_band_coby1 txa and #7 - //SEG106 [59] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- aby_neq_coby1_then_la1 + //SEG107 [60] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- aby_neq_coby1_then_la1 cmp #7 bne b4_from_b3 - //SEG107 initplottables::@7 + //SEG108 initplottables::@7 b7: - //SEG108 [60] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 + //SEG109 [61] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -6813,93 +6826,93 @@ initplottables: { lda yoffs+1 adc #>$140 sta yoffs+1 - //SEG109 [61] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] + //SEG110 [62] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] b4_from_b3: b4_from_b7: - //SEG110 [61] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy - //SEG111 initplottables::@4 + //SEG111 [62] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy + //SEG112 initplottables::@4 b4: - //SEG112 [62] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby=_inc_xby + //SEG113 [63] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby=_inc_xby inx - //SEG113 [63] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby_neq_0_then_la1 + //SEG114 [64] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby_neq_0_then_la1 cpx #0 bne b3_from_b4 - //SEG114 initplottables::@return + //SEG115 initplottables::@return breturn: - //SEG115 [64] return [ ] + //SEG116 [65] return [ ] rts - //SEG116 initplottables::@10 + //SEG117 initplottables::@10 b10: - //SEG117 [48] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] + //SEG118 [49] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] b2_from_b10: - //SEG118 [48] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy + //SEG119 [49] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy jmp b2 } -//SEG119 initscreen +//SEG120 initscreen initscreen: { .label b = 6 .label c = 6 - //SEG120 [66] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG121 [67] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] b1_from_initscreen: - //SEG121 [66] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 + //SEG122 [67] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 lda #BITMAP sta b+1 jmp b1 - //SEG122 [66] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG123 [67] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] b1_from_b1: - //SEG123 [66] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy - //SEG124 initscreen::@1 + //SEG124 [67] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy + //SEG125 initscreen::@1 b1: - //SEG125 [67] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 + //SEG126 [68] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #0 sta (b),y - //SEG126 [68] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG127 [69] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 inc b bne !+ inc b+1 !: - //SEG127 [69] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG128 [70] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 lda b cmp #initscreen::@2] + //SEG129 [71] phi from initscreen::@1 to initscreen::@2 [phi:initscreen::@1->initscreen::@2] b2_from_b1: - //SEG129 [70] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 + //SEG130 [71] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 lda #SCREEN sta c+1 jmp b2 - //SEG130 [70] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] + //SEG131 [71] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] b2_from_b2: - //SEG131 [70] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy - //SEG132 initscreen::@2 + //SEG132 [71] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy + //SEG133 initscreen::@2 b2: - //SEG133 [71] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 + //SEG134 [72] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y - //SEG134 [72] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG135 [73] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 inc c bne !+ inc c+1 !: - //SEG135 [73] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG136 [74] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 lda c cmp #initscreen] + //SEG11 [66] phi from main to initscreen [phi:main->initscreen] initscreen_from_main: jsr initscreen //SEG12 main::@1 b1: //SEG13 [6] call initplottables param-assignment [ ] - //SEG14 [40] phi from main::@1 to initplottables [phi:main::@1->initplottables] + //SEG14 [41] phi from main::@1 to initplottables [phi:main::@1->initplottables] initplottables_from_b1: jsr initplottables //SEG15 main::@2 @@ -6970,12 +6983,12 @@ main: { //SEG18 [10] phi (byte) line::y#0 = (byte) 0 [phi:main::@2->line#0] -- zpby1=coby1 lda #0 sta line.y - //SEG19 [10] phi (byte) line::y1#2 = (byte) 10 [phi:main::@2->line#1] -- xby=coby1 - ldx #$a + //SEG19 [10] phi (byte) line::y1#2 = (byte) 100 [phi:main::@2->line#1] -- xby=coby1 + ldx #$64 //SEG20 [10] phi (byte) line::x#0 = (byte) 0 [phi:main::@2->line#2] -- zpby1=coby1 sta line.x - //SEG21 [10] phi (byte) line::x1#2 = (byte) 20 [phi:main::@2->line#3] -- zpby1=coby1 - lda #$14 + //SEG21 [10] phi (byte) line::x1#2 = (byte) 200 [phi:main::@2->line#3] -- zpby1=coby1 + lda #$c8 sta line.x1 jsr line //SEG22 main::@3 @@ -6986,13 +6999,13 @@ main: { //SEG25 [10] phi (byte) line::y#0 = (byte) 20 [phi:main::@3->line#0] -- zpby1=coby1 lda #$14 sta line.y - //SEG26 [10] phi (byte) line::y1#2 = (byte) 40 [phi:main::@3->line#1] -- xby=coby1 - ldx #$28 + //SEG26 [10] phi (byte) line::y1#2 = (byte) 140 [phi:main::@3->line#1] -- xby=coby1 + ldx #$8c //SEG27 [10] phi (byte) line::x#0 = (byte) 10 [phi:main::@3->line#2] -- zpby1=coby1 lda #$a sta line.x - //SEG28 [10] phi (byte) line::x1#2 = (byte) 40 [phi:main::@3->line#3] -- zpby1=coby1 - lda #$28 + //SEG28 [10] phi (byte) line::x1#2 = (byte) 140 [phi:main::@3->line#3] -- zpby1=coby1 + lda #$8c sta line.x1 jsr line //SEG29 main::@return @@ -7079,131 +7092,137 @@ line: { } //SEG58 plot plot: { - .label _0 = 10 - .label _3 = 10 - .label _6 = 10 + .label _5 = 12 + .label plotter_x = 6 + .label plotter_y = 10 .label plotter = 6 - //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- zpby1=cowo1_staridx_xby - lda plot_xlo,x - sta _0 - //SEG60 [28] (byte~) plot::$1 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::$0 plot::$1 ] -- aby=cowo1_staridx_yby - lda plot_ylo,y - //SEG61 [29] (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::$2 ] -- aby=zpby1_plus_aby - clc - adc _0 - //SEG62 [30] (byte*) plot::plotter#1 ← (const byte*) BITMAP#0 lo= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter#1 ] -- zpptrby1=cowo1_setlo_aby - sta plotter - lda #>BITMAP - sta plotter+1 - //SEG63 [31] (byte~) plot::$3 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter#1 plot::$3 ] -- zpby1=cowo1_staridx_xby + //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- aby=cowo1_staridx_xby lda plot_xhi,x - sta _3 - //SEG64 [32] (byte~) plot::$4 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter#1 plot::$3 plot::$4 ] -- aby=cowo1_staridx_yby + //SEG60 [28] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] -- zpptrby1=coby1_sethi_aby + sta plotter_x+1 + lda #<0 + sta plotter_x + //SEG61 [29] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] -- aby=cowo1_staridx_xby + lda plot_xlo,x + //SEG62 [30] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] -- zpptrby1=zpptrby1_setlo_aby + sta plotter_x + //SEG63 [31] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] -- aby=cowo1_staridx_yby lda plot_yhi,y - //SEG65 [33] (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 [ plot::x#0 plot::plotter#1 plot::$5 ] -- aby=zpby1_plus_aby + //SEG64 [32] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] -- zpptrby1=coby1_sethi_aby + sta plotter_y+1 + lda #<0 + sta plotter_y + //SEG65 [33] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] -- aby=cowo1_staridx_yby + lda plot_ylo,y + //SEG66 [34] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] -- zpptrby1=zpptrby1_setlo_aby + sta plotter_y + //SEG67 [35] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] -- zpptrby1=zpptrby1_plus_zpptrby2 + lda plotter clc - adc _3 - //SEG66 [34] (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 [ plot::x#0 plot::plotter#2 ] -- zpptrby1=zpptrby1_sethi_aby + adc plotter_y + sta plotter + lda plotter+1 + adc plotter_y+1 sta plotter+1 - //SEG67 [35] (byte~) plot::$6 ← * (byte*) plot::plotter#2 [ plot::x#0 plot::plotter#2 plot::$6 ] -- zpby1=_star_zpptrby1 + //SEG68 [36] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#0 plot::plotter#0 plot::$5 ] -- zpby1=_star_zpptrby1 ldy #0 lda (plotter),y - sta _6 - //SEG68 [36] (byte~) plot::$7 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#2 plot::$6 plot::$7 ] -- aby=cowo1_staridx_xby + sta _5 + //SEG69 [37] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 plot::$6 ] -- aby=cowo1_staridx_xby lda plot_bit,x - //SEG69 [37] (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 [ plot::plotter#2 plot::$8 ] -- aby=zpby1_bor_aby - ora _6 - //SEG70 [38] *((byte*) plot::plotter#2) ← (byte~) plot::$8 [ ] -- _star_zpptrby1=aby + //SEG70 [38] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ] -- aby=zpby1_bor_aby + ora _5 + //SEG71 [39] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ] -- _star_zpptrby1=aby sta (plotter),y - //SEG71 plot::@return + //SEG72 plot::@return breturn: - //SEG72 [39] return [ ] + //SEG73 [40] return [ ] rts } -//SEG73 initplottables +//SEG74 initplottables initplottables: { .label _6 = 2 .label yoffs = 6 - //SEG74 [41] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] + //SEG75 [42] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] b1_from_initplottables: - //SEG75 [41] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- yby=coby1 + //SEG76 [42] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- yby=coby1 ldy #$80 - //SEG76 [41] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- xby=coby1 + //SEG77 [42] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- xby=coby1 ldx #0 jmp b1 - //SEG77 [41] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] + //SEG78 [42] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] b1_from_b2: - //SEG78 [41] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy - //SEG79 [41] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy - //SEG80 initplottables::@1 + //SEG79 [42] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy + //SEG80 [42] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy + //SEG81 initplottables::@1 b1: - //SEG81 [42] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- aby=xby_band_coby1 + //SEG82 [43] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- aby=xby_band_coby1 txa and #$f8 - //SEG82 [43] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=aby + //SEG83 [44] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=aby sta plot_xlo,x - //SEG83 [44] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=coby2 + //SEG84 [45] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=coby2 lda #>BITMAP sta plot_xhi,x - //SEG84 [45] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=yby + //SEG85 [46] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=yby tya sta plot_bit,x - //SEG85 [46] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- yby=yby_ror_1 + //SEG86 [47] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- yby=yby_ror_1 tya lsr tay - //SEG86 [47] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- yby_neq_0_then_la1 + //SEG87 [48] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- yby_neq_0_then_la1 cpy #0 bne b10 - //SEG87 [48] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] + //SEG88 [49] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] b2_from_b1: - //SEG88 [48] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- yby=coby1 + //SEG89 [49] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- yby=coby1 ldy #$80 - //SEG89 initplottables::@2 + //SEG90 initplottables::@2 b2: - //SEG90 [49] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- xby=_inc_xby + //SEG91 [50] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- xby=_inc_xby inx - //SEG91 [50] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- xby_neq_0_then_la1 + //SEG92 [51] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- xby_neq_0_then_la1 cpx #0 bne b1_from_b2 - //SEG92 [51] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] + //SEG93 [52] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] b3_from_b2: - //SEG93 [51] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 + //SEG94 [52] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG94 [51] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- xby=coby1 + //SEG95 [52] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- xby=coby1 ldx #0 jmp b3 - //SEG95 [51] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] + //SEG96 [52] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] b3_from_b4: - //SEG96 [51] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy - //SEG97 [51] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy - //SEG98 initplottables::@3 + //SEG97 [52] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy + //SEG98 [52] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy + //SEG99 initplottables::@3 b3: - //SEG99 [52] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=xby_band_coby1 + //SEG100 [53] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=xby_band_coby1 txa and #7 sta _6 - //SEG100 [53] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- aby=_lo_zpptrby1 + //SEG101 [54] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- aby=_lo_zpptrby1 lda yoffs - //SEG101 [54] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- aby=zpby1_bor_aby + //SEG102 [55] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- aby=zpby1_bor_aby ora _6 - //SEG102 [55] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby + //SEG103 [56] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby sta plot_ylo,x - //SEG103 [56] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- aby=_hi_zpptrby1 + //SEG104 [57] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- aby=_hi_zpptrby1 lda yoffs+1 - //SEG104 [57] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby + //SEG105 [58] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby sta plot_yhi,x - //SEG105 [58] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- aby=xby_band_coby1 + //SEG106 [59] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- aby=xby_band_coby1 txa and #7 - //SEG106 [59] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- aby_neq_coby1_then_la1 + //SEG107 [60] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- aby_neq_coby1_then_la1 cmp #7 bne b4_from_b3 - //SEG107 initplottables::@7 + //SEG108 initplottables::@7 b7: - //SEG108 [60] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 + //SEG109 [61] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -7211,93 +7230,93 @@ initplottables: { lda yoffs+1 adc #>$140 sta yoffs+1 - //SEG109 [61] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] + //SEG110 [62] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] b4_from_b3: b4_from_b7: - //SEG110 [61] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy - //SEG111 initplottables::@4 + //SEG111 [62] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy + //SEG112 initplottables::@4 b4: - //SEG112 [62] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby=_inc_xby + //SEG113 [63] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby=_inc_xby inx - //SEG113 [63] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby_neq_0_then_la1 + //SEG114 [64] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby_neq_0_then_la1 cpx #0 bne b3_from_b4 - //SEG114 initplottables::@return + //SEG115 initplottables::@return breturn: - //SEG115 [64] return [ ] + //SEG116 [65] return [ ] rts - //SEG116 initplottables::@10 + //SEG117 initplottables::@10 b10: - //SEG117 [48] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] + //SEG118 [49] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] b2_from_b10: - //SEG118 [48] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy + //SEG119 [49] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy jmp b2 } -//SEG119 initscreen +//SEG120 initscreen initscreen: { .label b = 6 .label c = 6 - //SEG120 [66] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG121 [67] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] b1_from_initscreen: - //SEG121 [66] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 + //SEG122 [67] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 lda #BITMAP sta b+1 jmp b1 - //SEG122 [66] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG123 [67] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] b1_from_b1: - //SEG123 [66] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy - //SEG124 initscreen::@1 + //SEG124 [67] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy + //SEG125 initscreen::@1 b1: - //SEG125 [67] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 + //SEG126 [68] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #0 sta (b),y - //SEG126 [68] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG127 [69] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 inc b bne !+ inc b+1 !: - //SEG127 [69] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG128 [70] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 lda b cmp #initscreen::@2] + //SEG129 [71] phi from initscreen::@1 to initscreen::@2 [phi:initscreen::@1->initscreen::@2] b2_from_b1: - //SEG129 [70] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 + //SEG130 [71] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 lda #SCREEN sta c+1 jmp b2 - //SEG130 [70] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] + //SEG131 [71] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] b2_from_b2: - //SEG131 [70] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy - //SEG132 initscreen::@2 + //SEG132 [71] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy + //SEG133 initscreen::@2 b2: - //SEG133 [71] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 + //SEG134 [72] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y - //SEG134 [72] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG135 [73] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 inc c bne !+ inc c+1 !: - //SEG135 [73] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG136 [74] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 lda c cmp #initscreen] + //SEG11 [66] phi from main to initscreen [phi:main->initscreen] initscreen_from_main: jsr initscreen //SEG12 main::@1 b1: //SEG13 [6] call initplottables param-assignment [ ] - //SEG14 [40] phi from main::@1 to initplottables [phi:main::@1->initplottables] + //SEG14 [41] phi from main::@1 to initplottables [phi:main::@1->initplottables] jsr initplottables //SEG15 main::@2 b2: @@ -7385,12 +7404,12 @@ main: { //SEG18 [10] phi (byte) line::y#0 = (byte) 0 [phi:main::@2->line#0] -- zpby1=coby1 lda #0 sta line.y - //SEG19 [10] phi (byte) line::y1#2 = (byte) 10 [phi:main::@2->line#1] -- xby=coby1 - ldx #$a + //SEG19 [10] phi (byte) line::y1#2 = (byte) 100 [phi:main::@2->line#1] -- xby=coby1 + ldx #$64 //SEG20 [10] phi (byte) line::x#0 = (byte) 0 [phi:main::@2->line#2] -- zpby1=coby1 sta line.x - //SEG21 [10] phi (byte) line::x1#2 = (byte) 20 [phi:main::@2->line#3] -- zpby1=coby1 - lda #$14 + //SEG21 [10] phi (byte) line::x1#2 = (byte) 200 [phi:main::@2->line#3] -- zpby1=coby1 + lda #$c8 sta line.x1 jsr line //SEG22 main::@3 @@ -7400,13 +7419,13 @@ main: { //SEG25 [10] phi (byte) line::y#0 = (byte) 20 [phi:main::@3->line#0] -- zpby1=coby1 lda #$14 sta line.y - //SEG26 [10] phi (byte) line::y1#2 = (byte) 40 [phi:main::@3->line#1] -- xby=coby1 - ldx #$28 + //SEG26 [10] phi (byte) line::y1#2 = (byte) 140 [phi:main::@3->line#1] -- xby=coby1 + ldx #$8c //SEG27 [10] phi (byte) line::x#0 = (byte) 10 [phi:main::@3->line#2] -- zpby1=coby1 lda #$a sta line.x - //SEG28 [10] phi (byte) line::x1#2 = (byte) 40 [phi:main::@3->line#3] -- zpby1=coby1 - lda #$28 + //SEG28 [10] phi (byte) line::x1#2 = (byte) 140 [phi:main::@3->line#3] -- zpby1=coby1 + lda #$8c sta line.x1 jsr line //SEG29 main::@return @@ -7489,129 +7508,135 @@ line: { } //SEG58 plot plot: { - .label _0 = 10 - .label _3 = 10 - .label _6 = 10 + .label _5 = 12 + .label plotter_x = 6 + .label plotter_y = 10 .label plotter = 6 - //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- zpby1=cowo1_staridx_xby - lda plot_xlo,x - sta _0 - //SEG60 [28] (byte~) plot::$1 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::$0 plot::$1 ] -- aby=cowo1_staridx_yby - lda plot_ylo,y - //SEG61 [29] (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::$2 ] -- aby=zpby1_plus_aby - clc - adc _0 - //SEG62 [30] (byte*) plot::plotter#1 ← (const byte*) BITMAP#0 lo= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter#1 ] -- zpptrby1=cowo1_setlo_aby - sta plotter - lda #>BITMAP - sta plotter+1 - //SEG63 [31] (byte~) plot::$3 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter#1 plot::$3 ] -- zpby1=cowo1_staridx_xby + //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- aby=cowo1_staridx_xby lda plot_xhi,x - sta _3 - //SEG64 [32] (byte~) plot::$4 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter#1 plot::$3 plot::$4 ] -- aby=cowo1_staridx_yby + //SEG60 [28] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] -- zpptrby1=coby1_sethi_aby + sta plotter_x+1 + lda #<0 + sta plotter_x + //SEG61 [29] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] -- aby=cowo1_staridx_xby + lda plot_xlo,x + //SEG62 [30] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] -- zpptrby1=zpptrby1_setlo_aby + sta plotter_x + //SEG63 [31] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] -- aby=cowo1_staridx_yby lda plot_yhi,y - //SEG65 [33] (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 [ plot::x#0 plot::plotter#1 plot::$5 ] -- aby=zpby1_plus_aby + //SEG64 [32] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] -- zpptrby1=coby1_sethi_aby + sta plotter_y+1 + lda #<0 + sta plotter_y + //SEG65 [33] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] -- aby=cowo1_staridx_yby + lda plot_ylo,y + //SEG66 [34] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] -- zpptrby1=zpptrby1_setlo_aby + sta plotter_y + //SEG67 [35] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] -- zpptrby1=zpptrby1_plus_zpptrby2 + lda plotter clc - adc _3 - //SEG66 [34] (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 [ plot::x#0 plot::plotter#2 ] -- zpptrby1=zpptrby1_sethi_aby + adc plotter_y + sta plotter + lda plotter+1 + adc plotter_y+1 sta plotter+1 - //SEG67 [35] (byte~) plot::$6 ← * (byte*) plot::plotter#2 [ plot::x#0 plot::plotter#2 plot::$6 ] -- zpby1=_star_zpptrby1 + //SEG68 [36] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#0 plot::plotter#0 plot::$5 ] -- zpby1=_star_zpptrby1 ldy #0 lda (plotter),y - sta _6 - //SEG68 [36] (byte~) plot::$7 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#2 plot::$6 plot::$7 ] -- aby=cowo1_staridx_xby + sta _5 + //SEG69 [37] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 plot::$6 ] -- aby=cowo1_staridx_xby lda plot_bit,x - //SEG69 [37] (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 [ plot::plotter#2 plot::$8 ] -- aby=zpby1_bor_aby - ora _6 - //SEG70 [38] *((byte*) plot::plotter#2) ← (byte~) plot::$8 [ ] -- _star_zpptrby1=aby + //SEG70 [38] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ] -- aby=zpby1_bor_aby + ora _5 + //SEG71 [39] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ] -- _star_zpptrby1=aby sta (plotter),y - //SEG71 plot::@return + //SEG72 plot::@return breturn: - //SEG72 [39] return [ ] + //SEG73 [40] return [ ] rts } -//SEG73 initplottables +//SEG74 initplottables initplottables: { .label _6 = 2 .label yoffs = 6 - //SEG74 [41] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] + //SEG75 [42] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] b1_from_initplottables: - //SEG75 [41] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- yby=coby1 + //SEG76 [42] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- yby=coby1 ldy #$80 - //SEG76 [41] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- xby=coby1 + //SEG77 [42] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- xby=coby1 ldx #0 jmp b1 - //SEG77 [41] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] - //SEG78 [41] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy - //SEG79 [41] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy - //SEG80 initplottables::@1 + //SEG78 [42] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] + //SEG79 [42] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy + //SEG80 [42] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy + //SEG81 initplottables::@1 b1: - //SEG81 [42] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- aby=xby_band_coby1 + //SEG82 [43] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- aby=xby_band_coby1 txa and #$f8 - //SEG82 [43] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=aby + //SEG83 [44] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=aby sta plot_xlo,x - //SEG83 [44] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=coby2 + //SEG84 [45] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=coby2 lda #>BITMAP sta plot_xhi,x - //SEG84 [45] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=yby + //SEG85 [46] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=yby tya sta plot_bit,x - //SEG85 [46] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- yby=yby_ror_1 + //SEG86 [47] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- yby=yby_ror_1 tya lsr tay - //SEG86 [47] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- yby_neq_0_then_la1 + //SEG87 [48] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- yby_neq_0_then_la1 cpy #0 bne b10 - //SEG87 [48] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] + //SEG88 [49] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] b2_from_b1: - //SEG88 [48] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- yby=coby1 + //SEG89 [49] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- yby=coby1 ldy #$80 - //SEG89 initplottables::@2 + //SEG90 initplottables::@2 b2: - //SEG90 [49] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- xby=_inc_xby + //SEG91 [50] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- xby=_inc_xby inx - //SEG91 [50] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- xby_neq_0_then_la1 + //SEG92 [51] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- xby_neq_0_then_la1 cpx #0 bne b1 - //SEG92 [51] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] + //SEG93 [52] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] b3_from_b2: - //SEG93 [51] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 + //SEG94 [52] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG94 [51] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- xby=coby1 + //SEG95 [52] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- xby=coby1 ldx #0 jmp b3 - //SEG95 [51] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] - //SEG96 [51] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy - //SEG97 [51] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy - //SEG98 initplottables::@3 + //SEG96 [52] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] + //SEG97 [52] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy + //SEG98 [52] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy + //SEG99 initplottables::@3 b3: - //SEG99 [52] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=xby_band_coby1 + //SEG100 [53] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=xby_band_coby1 txa and #7 sta _6 - //SEG100 [53] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- aby=_lo_zpptrby1 + //SEG101 [54] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- aby=_lo_zpptrby1 lda yoffs - //SEG101 [54] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- aby=zpby1_bor_aby + //SEG102 [55] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- aby=zpby1_bor_aby ora _6 - //SEG102 [55] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby + //SEG103 [56] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby sta plot_ylo,x - //SEG103 [56] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- aby=_hi_zpptrby1 + //SEG104 [57] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- aby=_hi_zpptrby1 lda yoffs+1 - //SEG104 [57] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby + //SEG105 [58] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby sta plot_yhi,x - //SEG105 [58] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- aby=xby_band_coby1 + //SEG106 [59] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- aby=xby_band_coby1 txa and #7 - //SEG106 [59] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- aby_neq_coby1_then_la1 + //SEG107 [60] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- aby_neq_coby1_then_la1 cmp #7 bne b4 - //SEG107 initplottables::@7 + //SEG108 initplottables::@7 b7: - //SEG108 [60] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 + //SEG109 [61] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -7619,88 +7644,88 @@ initplottables: { lda yoffs+1 adc #>$140 sta yoffs+1 - //SEG109 [61] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] - //SEG110 [61] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy - //SEG111 initplottables::@4 + //SEG110 [62] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] + //SEG111 [62] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy + //SEG112 initplottables::@4 b4: - //SEG112 [62] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby=_inc_xby + //SEG113 [63] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby=_inc_xby inx - //SEG113 [63] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby_neq_0_then_la1 + //SEG114 [64] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby_neq_0_then_la1 cpx #0 bne b3 - //SEG114 initplottables::@return + //SEG115 initplottables::@return breturn: - //SEG115 [64] return [ ] + //SEG116 [65] return [ ] rts - //SEG116 initplottables::@10 + //SEG117 initplottables::@10 b10: - //SEG117 [48] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] - //SEG118 [48] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy + //SEG118 [49] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] + //SEG119 [49] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy jmp b2 } -//SEG119 initscreen +//SEG120 initscreen initscreen: { .label b = 6 .label c = 6 - //SEG120 [66] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG121 [67] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] b1_from_initscreen: - //SEG121 [66] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 + //SEG122 [67] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 lda #BITMAP sta b+1 jmp b1 - //SEG122 [66] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] - //SEG123 [66] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy - //SEG124 initscreen::@1 + //SEG123 [67] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG124 [67] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy + //SEG125 initscreen::@1 b1: - //SEG125 [67] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 + //SEG126 [68] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #0 sta (b),y - //SEG126 [68] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG127 [69] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 inc b bne !+ inc b+1 !: - //SEG127 [69] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG128 [70] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 lda b cmp #initscreen::@2] + //SEG129 [71] phi from initscreen::@1 to initscreen::@2 [phi:initscreen::@1->initscreen::@2] b2_from_b1: - //SEG129 [70] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 + //SEG130 [71] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 lda #SCREEN sta c+1 jmp b2 - //SEG130 [70] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] - //SEG131 [70] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy - //SEG132 initscreen::@2 + //SEG131 [71] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] + //SEG132 [71] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy + //SEG133 initscreen::@2 b2: - //SEG133 [71] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 + //SEG134 [72] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y - //SEG134 [72] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG135 [73] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 inc c bne !+ inc c+1 !: - //SEG135 [73] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG136 [74] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 lda c cmp #initscreen] + //SEG11 [66] phi from main to initscreen [phi:main->initscreen] jsr initscreen //SEG12 main::@1 //SEG13 [6] call initplottables param-assignment [ ] - //SEG14 [40] phi from main::@1 to initplottables [phi:main::@1->initplottables] + //SEG14 [41] phi from main::@1 to initplottables [phi:main::@1->initplottables] jsr initplottables //SEG15 main::@2 //SEG16 [7] call line param-assignment [ ] @@ -7778,12 +7803,12 @@ main: { //SEG18 [10] phi (byte) line::y#0 = (byte) 0 [phi:main::@2->line#0] -- zpby1=coby1 lda #0 sta line.y - //SEG19 [10] phi (byte) line::y1#2 = (byte) 10 [phi:main::@2->line#1] -- xby=coby1 - ldx #$a + //SEG19 [10] phi (byte) line::y1#2 = (byte) 100 [phi:main::@2->line#1] -- xby=coby1 + ldx #$64 //SEG20 [10] phi (byte) line::x#0 = (byte) 0 [phi:main::@2->line#2] -- zpby1=coby1 sta line.x - //SEG21 [10] phi (byte) line::x1#2 = (byte) 20 [phi:main::@2->line#3] -- zpby1=coby1 - lda #$14 + //SEG21 [10] phi (byte) line::x1#2 = (byte) 200 [phi:main::@2->line#3] -- zpby1=coby1 + lda #$c8 sta line.x1 jsr line //SEG22 main::@3 @@ -7792,13 +7817,13 @@ main: { //SEG25 [10] phi (byte) line::y#0 = (byte) 20 [phi:main::@3->line#0] -- zpby1=coby1 lda #$14 sta line.y - //SEG26 [10] phi (byte) line::y1#2 = (byte) 40 [phi:main::@3->line#1] -- xby=coby1 - ldx #$28 + //SEG26 [10] phi (byte) line::y1#2 = (byte) 140 [phi:main::@3->line#1] -- xby=coby1 + ldx #$8c //SEG27 [10] phi (byte) line::x#0 = (byte) 10 [phi:main::@3->line#2] -- zpby1=coby1 lda #$a sta line.x - //SEG28 [10] phi (byte) line::x1#2 = (byte) 40 [phi:main::@3->line#3] -- zpby1=coby1 - lda #$28 + //SEG28 [10] phi (byte) line::x1#2 = (byte) 140 [phi:main::@3->line#3] -- zpby1=coby1 + lda #$8c sta line.x1 jsr line //SEG29 main::@return @@ -7877,124 +7902,130 @@ line: { } //SEG58 plot plot: { - .label _0 = 10 - .label _3 = 10 - .label _6 = 10 + .label _5 = 12 + .label plotter_x = 6 + .label plotter_y = 10 .label plotter = 6 - //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- zpby1=cowo1_staridx_xby - lda plot_xlo,x - sta _0 - //SEG60 [28] (byte~) plot::$1 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::$0 plot::$1 ] -- aby=cowo1_staridx_yby - lda plot_ylo,y - //SEG61 [29] (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::$2 ] -- aby=zpby1_plus_aby - clc - adc _0 - //SEG62 [30] (byte*) plot::plotter#1 ← (const byte*) BITMAP#0 lo= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter#1 ] -- zpptrby1=cowo1_setlo_aby - sta plotter - lda #>BITMAP - sta plotter+1 - //SEG63 [31] (byte~) plot::$3 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter#1 plot::$3 ] -- zpby1=cowo1_staridx_xby + //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- aby=cowo1_staridx_xby lda plot_xhi,x - sta _3 - //SEG64 [32] (byte~) plot::$4 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter#1 plot::$3 plot::$4 ] -- aby=cowo1_staridx_yby + //SEG60 [28] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] -- zpptrby1=coby1_sethi_aby + sta plotter_x+1 + lda #<0 + sta plotter_x + //SEG61 [29] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] -- aby=cowo1_staridx_xby + lda plot_xlo,x + //SEG62 [30] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] -- zpptrby1=zpptrby1_setlo_aby + sta plotter_x + //SEG63 [31] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] -- aby=cowo1_staridx_yby lda plot_yhi,y - //SEG65 [33] (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 [ plot::x#0 plot::plotter#1 plot::$5 ] -- aby=zpby1_plus_aby + //SEG64 [32] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] -- zpptrby1=coby1_sethi_aby + sta plotter_y+1 + lda #<0 + sta plotter_y + //SEG65 [33] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] -- aby=cowo1_staridx_yby + lda plot_ylo,y + //SEG66 [34] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] -- zpptrby1=zpptrby1_setlo_aby + sta plotter_y + //SEG67 [35] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] -- zpptrby1=zpptrby1_plus_zpptrby2 + lda plotter clc - adc _3 - //SEG66 [34] (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 [ plot::x#0 plot::plotter#2 ] -- zpptrby1=zpptrby1_sethi_aby + adc plotter_y + sta plotter + lda plotter+1 + adc plotter_y+1 sta plotter+1 - //SEG67 [35] (byte~) plot::$6 ← * (byte*) plot::plotter#2 [ plot::x#0 plot::plotter#2 plot::$6 ] -- zpby1=_star_zpptrby1 + //SEG68 [36] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#0 plot::plotter#0 plot::$5 ] -- zpby1=_star_zpptrby1 ldy #0 lda (plotter),y - sta _6 - //SEG68 [36] (byte~) plot::$7 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#2 plot::$6 plot::$7 ] -- aby=cowo1_staridx_xby + sta _5 + //SEG69 [37] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 plot::$6 ] -- aby=cowo1_staridx_xby lda plot_bit,x - //SEG69 [37] (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 [ plot::plotter#2 plot::$8 ] -- aby=zpby1_bor_aby - ora _6 - //SEG70 [38] *((byte*) plot::plotter#2) ← (byte~) plot::$8 [ ] -- _star_zpptrby1=aby + //SEG70 [38] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ] -- aby=zpby1_bor_aby + ora _5 + //SEG71 [39] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ] -- _star_zpptrby1=aby sta (plotter),y - //SEG71 plot::@return - //SEG72 [39] return [ ] + //SEG72 plot::@return + //SEG73 [40] return [ ] rts } -//SEG73 initplottables +//SEG74 initplottables initplottables: { .label _6 = 2 .label yoffs = 6 - //SEG74 [41] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] - //SEG75 [41] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- yby=coby1 + //SEG75 [42] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] + //SEG76 [42] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- yby=coby1 ldy #$80 - //SEG76 [41] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- xby=coby1 + //SEG77 [42] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- xby=coby1 ldx #0 jmp b1 - //SEG77 [41] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] - //SEG78 [41] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy - //SEG79 [41] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy - //SEG80 initplottables::@1 + //SEG78 [42] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] + //SEG79 [42] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy + //SEG80 [42] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy + //SEG81 initplottables::@1 b1: - //SEG81 [42] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- aby=xby_band_coby1 + //SEG82 [43] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- aby=xby_band_coby1 txa and #$f8 - //SEG82 [43] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=aby + //SEG83 [44] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=aby sta plot_xlo,x - //SEG83 [44] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=coby2 + //SEG84 [45] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=coby2 lda #>BITMAP sta plot_xhi,x - //SEG84 [45] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=yby + //SEG85 [46] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=yby tya sta plot_bit,x - //SEG85 [46] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- yby=yby_ror_1 + //SEG86 [47] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- yby=yby_ror_1 tya lsr tay - //SEG86 [47] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- yby_neq_0_then_la1 + //SEG87 [48] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- yby_neq_0_then_la1 cpy #0 bne b10 - //SEG87 [48] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] - //SEG88 [48] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- yby=coby1 + //SEG88 [49] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] + //SEG89 [49] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- yby=coby1 ldy #$80 - //SEG89 initplottables::@2 + //SEG90 initplottables::@2 b2: - //SEG90 [49] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- xby=_inc_xby + //SEG91 [50] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- xby=_inc_xby inx - //SEG91 [50] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- xby_neq_0_then_la1 + //SEG92 [51] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- xby_neq_0_then_la1 cpx #0 bne b1 - //SEG92 [51] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] - //SEG93 [51] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 + //SEG93 [52] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] + //SEG94 [52] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG94 [51] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- xby=coby1 + //SEG95 [52] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- xby=coby1 ldx #0 jmp b3 - //SEG95 [51] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] - //SEG96 [51] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy - //SEG97 [51] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy - //SEG98 initplottables::@3 + //SEG96 [52] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] + //SEG97 [52] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy + //SEG98 [52] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy + //SEG99 initplottables::@3 b3: - //SEG99 [52] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=xby_band_coby1 + //SEG100 [53] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=xby_band_coby1 txa and #7 sta _6 - //SEG100 [53] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- aby=_lo_zpptrby1 + //SEG101 [54] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- aby=_lo_zpptrby1 lda yoffs - //SEG101 [54] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- aby=zpby1_bor_aby + //SEG102 [55] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- aby=zpby1_bor_aby ora _6 - //SEG102 [55] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby + //SEG103 [56] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby sta plot_ylo,x - //SEG103 [56] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- aby=_hi_zpptrby1 + //SEG104 [57] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- aby=_hi_zpptrby1 lda yoffs+1 - //SEG104 [57] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby + //SEG105 [58] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby sta plot_yhi,x - //SEG105 [58] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- aby=xby_band_coby1 + //SEG106 [59] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- aby=xby_band_coby1 txa and #7 - //SEG106 [59] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- aby_neq_coby1_then_la1 + //SEG107 [60] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- aby_neq_coby1_then_la1 cmp #7 bne b4 - //SEG107 initplottables::@7 - //SEG108 [60] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 + //SEG108 initplottables::@7 + //SEG109 [61] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -8002,84 +8033,84 @@ initplottables: { lda yoffs+1 adc #>$140 sta yoffs+1 - //SEG109 [61] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] - //SEG110 [61] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy - //SEG111 initplottables::@4 + //SEG110 [62] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] + //SEG111 [62] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy + //SEG112 initplottables::@4 b4: - //SEG112 [62] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby=_inc_xby + //SEG113 [63] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby=_inc_xby inx - //SEG113 [63] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby_neq_0_then_la1 + //SEG114 [64] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby_neq_0_then_la1 cpx #0 bne b3 - //SEG114 initplottables::@return - //SEG115 [64] return [ ] + //SEG115 initplottables::@return + //SEG116 [65] return [ ] rts - //SEG116 initplottables::@10 + //SEG117 initplottables::@10 b10: - //SEG117 [48] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] - //SEG118 [48] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy + //SEG118 [49] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] + //SEG119 [49] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy jmp b2 } -//SEG119 initscreen +//SEG120 initscreen initscreen: { .label b = 6 .label c = 6 - //SEG120 [66] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] - //SEG121 [66] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 + //SEG121 [67] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG122 [67] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 lda #BITMAP sta b+1 jmp b1 - //SEG122 [66] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] - //SEG123 [66] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy - //SEG124 initscreen::@1 + //SEG123 [67] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG124 [67] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy + //SEG125 initscreen::@1 b1: - //SEG125 [67] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 + //SEG126 [68] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #0 sta (b),y - //SEG126 [68] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG127 [69] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 inc b bne !+ inc b+1 !: - //SEG127 [69] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG128 [70] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 lda b cmp #initscreen::@2] - //SEG129 [70] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 + //SEG129 [71] phi from initscreen::@1 to initscreen::@2 [phi:initscreen::@1->initscreen::@2] + //SEG130 [71] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 lda #SCREEN sta c+1 jmp b2 - //SEG130 [70] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] - //SEG131 [70] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy - //SEG132 initscreen::@2 + //SEG131 [71] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] + //SEG132 [71] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy + //SEG133 initscreen::@2 b2: - //SEG133 [71] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 + //SEG134 [72] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y - //SEG134 [72] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG135 [73] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 inc c bne !+ inc c+1 !: - //SEG135 [73] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG136 [74] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 lda c cmp #initscreen] + //SEG11 [66] phi from main to initscreen [phi:main->initscreen] jsr initscreen //SEG12 main::@1 //SEG13 [6] call initplottables param-assignment [ ] - //SEG14 [40] phi from main::@1 to initplottables [phi:main::@1->initplottables] + //SEG14 [41] phi from main::@1 to initplottables [phi:main::@1->initplottables] jsr initplottables //SEG15 main::@2 //SEG16 [7] call line param-assignment [ ] @@ -8142,12 +8173,12 @@ main: { //SEG18 [10] phi (byte) line::y#0 = (byte) 0 [phi:main::@2->line#0] -- zpby1=coby1 lda #0 sta line.y - //SEG19 [10] phi (byte) line::y1#2 = (byte) 10 [phi:main::@2->line#1] -- xby=coby1 - ldx #$a + //SEG19 [10] phi (byte) line::y1#2 = (byte) 100 [phi:main::@2->line#1] -- xby=coby1 + ldx #$64 //SEG20 [10] phi (byte) line::x#0 = (byte) 0 [phi:main::@2->line#2] -- zpby1=coby1 sta line.x - //SEG21 [10] phi (byte) line::x1#2 = (byte) 20 [phi:main::@2->line#3] -- zpby1=coby1 - lda #$14 + //SEG21 [10] phi (byte) line::x1#2 = (byte) 200 [phi:main::@2->line#3] -- zpby1=coby1 + lda #$c8 sta line.x1 jsr line //SEG22 main::@3 @@ -8156,13 +8187,13 @@ main: { //SEG25 [10] phi (byte) line::y#0 = (byte) 20 [phi:main::@3->line#0] -- zpby1=coby1 lda #$14 sta line.y - //SEG26 [10] phi (byte) line::y1#2 = (byte) 40 [phi:main::@3->line#1] -- xby=coby1 - ldx #$28 + //SEG26 [10] phi (byte) line::y1#2 = (byte) 140 [phi:main::@3->line#1] -- xby=coby1 + ldx #$8c //SEG27 [10] phi (byte) line::x#0 = (byte) 10 [phi:main::@3->line#2] -- zpby1=coby1 lda #$a sta line.x - //SEG28 [10] phi (byte) line::x1#2 = (byte) 40 [phi:main::@3->line#3] -- zpby1=coby1 - lda #$28 + //SEG28 [10] phi (byte) line::x1#2 = (byte) 140 [phi:main::@3->line#3] -- zpby1=coby1 + lda #$8c sta line.x1 jsr line //SEG29 main::@return @@ -8241,122 +8272,128 @@ line: { } //SEG58 plot plot: { - .label _0 = 10 - .label _3 = 10 - .label _6 = 10 + .label _5 = 12 + .label plotter_x = 6 + .label plotter_y = 10 .label plotter = 6 - //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- zpby1=cowo1_staridx_xby - lda plot_xlo,x - sta _0 - //SEG60 [28] (byte~) plot::$1 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::$0 plot::$1 ] -- aby=cowo1_staridx_yby - lda plot_ylo,y - //SEG61 [29] (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::$2 ] -- aby=zpby1_plus_aby - clc - adc _0 - //SEG62 [30] (byte*) plot::plotter#1 ← (const byte*) BITMAP#0 lo= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter#1 ] -- zpptrby1=cowo1_setlo_aby - sta plotter - lda #>BITMAP - sta plotter+1 - //SEG63 [31] (byte~) plot::$3 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter#1 plot::$3 ] -- zpby1=cowo1_staridx_xby + //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- aby=cowo1_staridx_xby lda plot_xhi,x - sta _3 - //SEG64 [32] (byte~) plot::$4 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter#1 plot::$3 plot::$4 ] -- aby=cowo1_staridx_yby + //SEG60 [28] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] -- zpptrby1=coby1_sethi_aby + sta plotter_x+1 + lda #<0 + sta plotter_x + //SEG61 [29] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] -- aby=cowo1_staridx_xby + lda plot_xlo,x + //SEG62 [30] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] -- zpptrby1=zpptrby1_setlo_aby + sta plotter_x + //SEG63 [31] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] -- aby=cowo1_staridx_yby lda plot_yhi,y - //SEG65 [33] (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 [ plot::x#0 plot::plotter#1 plot::$5 ] -- aby=zpby1_plus_aby + //SEG64 [32] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] -- zpptrby1=coby1_sethi_aby + sta plotter_y+1 + lda #<0 + sta plotter_y + //SEG65 [33] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] -- aby=cowo1_staridx_yby + lda plot_ylo,y + //SEG66 [34] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] -- zpptrby1=zpptrby1_setlo_aby + sta plotter_y + //SEG67 [35] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] -- zpptrby1=zpptrby1_plus_zpptrby2 + lda plotter clc - adc _3 - //SEG66 [34] (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 [ plot::x#0 plot::plotter#2 ] -- zpptrby1=zpptrby1_sethi_aby + adc plotter_y + sta plotter + lda plotter+1 + adc plotter_y+1 sta plotter+1 - //SEG67 [35] (byte~) plot::$6 ← * (byte*) plot::plotter#2 [ plot::x#0 plot::plotter#2 plot::$6 ] -- zpby1=_star_zpptrby1 + //SEG68 [36] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#0 plot::plotter#0 plot::$5 ] -- zpby1=_star_zpptrby1 ldy #0 lda (plotter),y - sta _6 - //SEG68 [36] (byte~) plot::$7 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#2 plot::$6 plot::$7 ] -- aby=cowo1_staridx_xby + sta _5 + //SEG69 [37] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 plot::$6 ] -- aby=cowo1_staridx_xby lda plot_bit,x - //SEG69 [37] (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 [ plot::plotter#2 plot::$8 ] -- aby=zpby1_bor_aby - ora _6 - //SEG70 [38] *((byte*) plot::plotter#2) ← (byte~) plot::$8 [ ] -- _star_zpptrby1=aby + //SEG70 [38] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ] -- aby=zpby1_bor_aby + ora _5 + //SEG71 [39] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ] -- _star_zpptrby1=aby sta (plotter),y - //SEG71 plot::@return - //SEG72 [39] return [ ] + //SEG72 plot::@return + //SEG73 [40] return [ ] rts } -//SEG73 initplottables +//SEG74 initplottables initplottables: { .label _6 = 2 .label yoffs = 6 - //SEG74 [41] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] - //SEG75 [41] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- yby=coby1 + //SEG75 [42] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] + //SEG76 [42] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- yby=coby1 ldy #$80 - //SEG76 [41] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- xby=coby1 + //SEG77 [42] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- xby=coby1 ldx #0 - //SEG77 [41] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] - //SEG78 [41] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy - //SEG79 [41] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy - //SEG80 initplottables::@1 + //SEG78 [42] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] + //SEG79 [42] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy + //SEG80 [42] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy + //SEG81 initplottables::@1 b1: - //SEG81 [42] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- aby=xby_band_coby1 + //SEG82 [43] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- aby=xby_band_coby1 txa and #$f8 - //SEG82 [43] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=aby + //SEG83 [44] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=aby sta plot_xlo,x - //SEG83 [44] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=coby2 + //SEG84 [45] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=coby2 lda #>BITMAP sta plot_xhi,x - //SEG84 [45] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=yby + //SEG85 [46] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=yby tya sta plot_bit,x - //SEG85 [46] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- yby=yby_ror_1 + //SEG86 [47] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- yby=yby_ror_1 tya lsr tay - //SEG86 [47] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- yby_neq_0_then_la1 + //SEG87 [48] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- yby_neq_0_then_la1 cpy #0 bne b10 - //SEG87 [48] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] - //SEG88 [48] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- yby=coby1 + //SEG88 [49] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] + //SEG89 [49] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- yby=coby1 ldy #$80 - //SEG89 initplottables::@2 + //SEG90 initplottables::@2 b2: - //SEG90 [49] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- xby=_inc_xby + //SEG91 [50] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- xby=_inc_xby inx - //SEG91 [50] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- xby_neq_0_then_la1 + //SEG92 [51] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- xby_neq_0_then_la1 cpx #0 bne b1 - //SEG92 [51] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] - //SEG93 [51] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 + //SEG93 [52] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] + //SEG94 [52] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG94 [51] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- xby=coby1 + //SEG95 [52] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- xby=coby1 ldx #0 - //SEG95 [51] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] - //SEG96 [51] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy - //SEG97 [51] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy - //SEG98 initplottables::@3 + //SEG96 [52] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] + //SEG97 [52] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy + //SEG98 [52] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy + //SEG99 initplottables::@3 b3: - //SEG99 [52] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=xby_band_coby1 + //SEG100 [53] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=xby_band_coby1 txa and #7 sta _6 - //SEG100 [53] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- aby=_lo_zpptrby1 + //SEG101 [54] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- aby=_lo_zpptrby1 lda yoffs - //SEG101 [54] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- aby=zpby1_bor_aby + //SEG102 [55] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- aby=zpby1_bor_aby ora _6 - //SEG102 [55] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby + //SEG103 [56] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby sta plot_ylo,x - //SEG103 [56] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- aby=_hi_zpptrby1 + //SEG104 [57] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- aby=_hi_zpptrby1 lda yoffs+1 - //SEG104 [57] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby + //SEG105 [58] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby sta plot_yhi,x - //SEG105 [58] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- aby=xby_band_coby1 + //SEG106 [59] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- aby=xby_band_coby1 txa and #7 - //SEG106 [59] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- aby_neq_coby1_then_la1 + //SEG107 [60] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- aby_neq_coby1_then_la1 cmp #7 bne b4 - //SEG107 initplottables::@7 - //SEG108 [60] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 + //SEG108 initplottables::@7 + //SEG109 [61] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -8364,82 +8401,82 @@ initplottables: { lda yoffs+1 adc #>$140 sta yoffs+1 - //SEG109 [61] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] - //SEG110 [61] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy - //SEG111 initplottables::@4 + //SEG110 [62] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] + //SEG111 [62] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy + //SEG112 initplottables::@4 b4: - //SEG112 [62] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby=_inc_xby + //SEG113 [63] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby=_inc_xby inx - //SEG113 [63] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby_neq_0_then_la1 + //SEG114 [64] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby_neq_0_then_la1 cpx #0 bne b3 - //SEG114 initplottables::@return - //SEG115 [64] return [ ] + //SEG115 initplottables::@return + //SEG116 [65] return [ ] rts - //SEG116 initplottables::@10 + //SEG117 initplottables::@10 b10: - //SEG117 [48] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] - //SEG118 [48] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy + //SEG118 [49] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] + //SEG119 [49] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy jmp b2 } -//SEG119 initscreen +//SEG120 initscreen initscreen: { .label b = 6 .label c = 6 - //SEG120 [66] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] - //SEG121 [66] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 + //SEG121 [67] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG122 [67] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 lda #BITMAP sta b+1 - //SEG122 [66] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] - //SEG123 [66] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy - //SEG124 initscreen::@1 + //SEG123 [67] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG124 [67] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy + //SEG125 initscreen::@1 b1: - //SEG125 [67] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 + //SEG126 [68] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #0 sta (b),y - //SEG126 [68] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG127 [69] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 inc b bne !+ inc b+1 !: - //SEG127 [69] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG128 [70] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 lda b cmp #initscreen::@2] - //SEG129 [70] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 + //SEG129 [71] phi from initscreen::@1 to initscreen::@2 [phi:initscreen::@1->initscreen::@2] + //SEG130 [71] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 lda #SCREEN sta c+1 - //SEG130 [70] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] - //SEG131 [70] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy - //SEG132 initscreen::@2 + //SEG131 [71] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] + //SEG132 [71] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy + //SEG133 initscreen::@2 b2: - //SEG133 [71] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 + //SEG134 [72] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y - //SEG134 [72] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG135 [73] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 inc c bne !+ inc c+1 !: - //SEG135 [73] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG136 [74] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 lda c cmp #initscreen] + //SEG11 [66] phi from main to initscreen [phi:main->initscreen] jsr initscreen //SEG12 main::@1 //SEG13 [6] call initplottables param-assignment [ ] - //SEG14 [40] phi from main::@1 to initplottables [phi:main::@1->initplottables] + //SEG14 [41] phi from main::@1 to initplottables [phi:main::@1->initplottables] jsr initplottables //SEG15 main::@2 //SEG16 [7] call line param-assignment [ ] @@ -8664,12 +8705,12 @@ main: { //SEG18 [10] phi (byte) line::y#0 = (byte) 0 [phi:main::@2->line#0] -- zpby1=coby1 lda #0 sta line.y - //SEG19 [10] phi (byte) line::y1#2 = (byte) 10 [phi:main::@2->line#1] -- xby=coby1 - ldx #$a + //SEG19 [10] phi (byte) line::y1#2 = (byte) 100 [phi:main::@2->line#1] -- xby=coby1 + ldx #$64 //SEG20 [10] phi (byte) line::x#0 = (byte) 0 [phi:main::@2->line#2] -- zpby1=coby1 sta line.x - //SEG21 [10] phi (byte) line::x1#2 = (byte) 20 [phi:main::@2->line#3] -- zpby1=coby1 - lda #$14 + //SEG21 [10] phi (byte) line::x1#2 = (byte) 200 [phi:main::@2->line#3] -- zpby1=coby1 + lda #$c8 sta line.x1 jsr line //SEG22 main::@3 @@ -8678,13 +8719,13 @@ main: { //SEG25 [10] phi (byte) line::y#0 = (byte) 20 [phi:main::@3->line#0] -- zpby1=coby1 lda #$14 sta line.y - //SEG26 [10] phi (byte) line::y1#2 = (byte) 40 [phi:main::@3->line#1] -- xby=coby1 - ldx #$28 + //SEG26 [10] phi (byte) line::y1#2 = (byte) 140 [phi:main::@3->line#1] -- xby=coby1 + ldx #$8c //SEG27 [10] phi (byte) line::x#0 = (byte) 10 [phi:main::@3->line#2] -- zpby1=coby1 lda #$a sta line.x - //SEG28 [10] phi (byte) line::x1#2 = (byte) 40 [phi:main::@3->line#3] -- zpby1=coby1 - lda #$28 + //SEG28 [10] phi (byte) line::x1#2 = (byte) 140 [phi:main::@3->line#3] -- zpby1=coby1 + lda #$8c sta line.x1 jsr line //SEG29 main::@return @@ -8763,122 +8804,128 @@ line: { } //SEG58 plot plot: { - .label _0 = 10 - .label _3 = 10 - .label _6 = 10 + .label _5 = 12 + .label plotter_x = 6 + .label plotter_y = 10 .label plotter = 6 - //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- zpby1=cowo1_staridx_xby - lda plot_xlo,x - sta _0 - //SEG60 [28] (byte~) plot::$1 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::$0 plot::$1 ] -- aby=cowo1_staridx_yby - lda plot_ylo,y - //SEG61 [29] (byte~) plot::$2 ← (byte~) plot::$0 + (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::$2 ] -- aby=zpby1_plus_aby - clc - adc _0 - //SEG62 [30] (byte*) plot::plotter#1 ← (const byte*) BITMAP#0 lo= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter#1 ] -- zpptrby1=cowo1_setlo_aby - sta plotter - lda #>BITMAP - sta plotter+1 - //SEG63 [31] (byte~) plot::$3 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter#1 plot::$3 ] -- zpby1=cowo1_staridx_xby + //SEG59 [27] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] -- aby=cowo1_staridx_xby lda plot_xhi,x - sta _3 - //SEG64 [32] (byte~) plot::$4 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter#1 plot::$3 plot::$4 ] -- aby=cowo1_staridx_yby + //SEG60 [28] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] -- zpptrby1=coby1_sethi_aby + sta plotter_x+1 + lda #<0 + sta plotter_x + //SEG61 [29] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] -- aby=cowo1_staridx_xby + lda plot_xlo,x + //SEG62 [30] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] -- zpptrby1=zpptrby1_setlo_aby + sta plotter_x + //SEG63 [31] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] -- aby=cowo1_staridx_yby lda plot_yhi,y - //SEG65 [33] (byte~) plot::$5 ← (byte~) plot::$3 + (byte~) plot::$4 [ plot::x#0 plot::plotter#1 plot::$5 ] -- aby=zpby1_plus_aby + //SEG64 [32] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] -- zpptrby1=coby1_sethi_aby + sta plotter_y+1 + lda #<0 + sta plotter_y + //SEG65 [33] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] -- aby=cowo1_staridx_yby + lda plot_ylo,y + //SEG66 [34] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] -- zpptrby1=zpptrby1_setlo_aby + sta plotter_y + //SEG67 [35] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] -- zpptrby1=zpptrby1_plus_zpptrby2 + lda plotter clc - adc _3 - //SEG66 [34] (byte*) plot::plotter#2 ← (byte*) plot::plotter#1 hi= (byte~) plot::$5 [ plot::x#0 plot::plotter#2 ] -- zpptrby1=zpptrby1_sethi_aby + adc plotter_y + sta plotter + lda plotter+1 + adc plotter_y+1 sta plotter+1 - //SEG67 [35] (byte~) plot::$6 ← * (byte*) plot::plotter#2 [ plot::x#0 plot::plotter#2 plot::$6 ] -- zpby1=_star_zpptrby1 + //SEG68 [36] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#0 plot::plotter#0 plot::$5 ] -- zpby1=_star_zpptrby1 ldy #0 lda (plotter),y - sta _6 - //SEG68 [36] (byte~) plot::$7 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#2 plot::$6 plot::$7 ] -- aby=cowo1_staridx_xby + sta _5 + //SEG69 [37] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 plot::$6 ] -- aby=cowo1_staridx_xby lda plot_bit,x - //SEG69 [37] (byte~) plot::$8 ← (byte~) plot::$6 | (byte~) plot::$7 [ plot::plotter#2 plot::$8 ] -- aby=zpby1_bor_aby - ora _6 - //SEG70 [38] *((byte*) plot::plotter#2) ← (byte~) plot::$8 [ ] -- _star_zpptrby1=aby + //SEG70 [38] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ] -- aby=zpby1_bor_aby + ora _5 + //SEG71 [39] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ] -- _star_zpptrby1=aby sta (plotter),y - //SEG71 plot::@return - //SEG72 [39] return [ ] + //SEG72 plot::@return + //SEG73 [40] return [ ] rts } -//SEG73 initplottables +//SEG74 initplottables initplottables: { .label _6 = 2 .label yoffs = 6 - //SEG74 [41] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] - //SEG75 [41] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- yby=coby1 + //SEG75 [42] phi from initplottables to initplottables::@1 [phi:initplottables->initplottables::@1] + //SEG76 [42] phi (byte) initplottables::bit#3 = (byte) 128 [phi:initplottables->initplottables::@1#0] -- yby=coby1 ldy #$80 - //SEG76 [41] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- xby=coby1 + //SEG77 [42] phi (byte) initplottables::x#2 = (byte) 0 [phi:initplottables->initplottables::@1#1] -- xby=coby1 ldx #0 - //SEG77 [41] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] - //SEG78 [41] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy - //SEG79 [41] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy - //SEG80 initplottables::@1 + //SEG78 [42] phi from initplottables::@2 to initplottables::@1 [phi:initplottables::@2->initplottables::@1] + //SEG79 [42] phi (byte) initplottables::bit#3 = (byte) initplottables::bit#4 [phi:initplottables::@2->initplottables::@1#0] -- register_copy + //SEG80 [42] phi (byte) initplottables::x#2 = (byte) initplottables::x#1 [phi:initplottables::@2->initplottables::@1#1] -- register_copy + //SEG81 initplottables::@1 b1: - //SEG81 [42] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- aby=xby_band_coby1 + //SEG82 [43] (byte~) initplottables::$0 ← (byte) initplottables::x#2 & (byte) 248 [ initplottables::x#2 initplottables::bit#3 initplottables::$0 ] -- aby=xby_band_coby1 txa and #$f8 - //SEG82 [43] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=aby + //SEG83 [44] *((const byte[]) plot_xlo#0 + (byte) initplottables::x#2) ← (byte~) initplottables::$0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=aby sta plot_xlo,x - //SEG83 [44] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=coby2 + //SEG84 [45] *((const byte[]) plot_xhi#0 + (byte) initplottables::x#2) ← >(const byte*) BITMAP#0 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=coby2 lda #>BITMAP sta plot_xhi,x - //SEG84 [45] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=yby + //SEG85 [46] *((const byte[]) plot_bit#0 + (byte) initplottables::x#2) ← (byte) initplottables::bit#3 [ initplottables::x#2 initplottables::bit#3 ] -- cowo1_staridx_xby=yby tya sta plot_bit,x - //SEG85 [46] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- yby=yby_ror_1 + //SEG86 [47] (byte) initplottables::bit#1 ← (byte) initplottables::bit#3 >> (byte) 1 [ initplottables::x#2 initplottables::bit#1 ] -- yby=yby_ror_1 tya lsr tay - //SEG86 [47] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- yby_neq_0_then_la1 + //SEG87 [48] if((byte) initplottables::bit#1!=(byte) 0) goto initplottables::@10 [ initplottables::x#2 ] -- yby_neq_0_then_la1 cpy #0 bne b10 - //SEG87 [48] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] - //SEG88 [48] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- yby=coby1 + //SEG88 [49] phi from initplottables::@1 to initplottables::@2 [phi:initplottables::@1->initplottables::@2] + //SEG89 [49] phi (byte) initplottables::bit#4 = (byte) 128 [phi:initplottables::@1->initplottables::@2#0] -- yby=coby1 ldy #$80 - //SEG89 initplottables::@2 + //SEG90 initplottables::@2 b2: - //SEG90 [49] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- xby=_inc_xby + //SEG91 [50] (byte) initplottables::x#1 ← ++ (byte) initplottables::x#2 [ initplottables::x#1 initplottables::bit#4 ] -- xby=_inc_xby inx - //SEG91 [50] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- xby_neq_0_then_la1 + //SEG92 [51] if((byte) initplottables::x#1!=(byte) 0) goto initplottables::@1 [ initplottables::x#1 initplottables::bit#4 ] -- xby_neq_0_then_la1 cpx #0 bne b1 - //SEG92 [51] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] - //SEG93 [51] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 + //SEG93 [52] phi from initplottables::@2 to initplottables::@3 [phi:initplottables::@2->initplottables::@3] + //SEG94 [52] phi (byte*) initplottables::yoffs#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG94 [51] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- xby=coby1 + //SEG95 [52] phi (byte) initplottables::y#2 = (byte) 0 [phi:initplottables::@2->initplottables::@3#1] -- xby=coby1 ldx #0 - //SEG95 [51] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] - //SEG96 [51] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy - //SEG97 [51] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy - //SEG98 initplottables::@3 + //SEG96 [52] phi from initplottables::@4 to initplottables::@3 [phi:initplottables::@4->initplottables::@3] + //SEG97 [52] phi (byte*) initplottables::yoffs#2 = (byte*) initplottables::yoffs#4 [phi:initplottables::@4->initplottables::@3#0] -- register_copy + //SEG98 [52] phi (byte) initplottables::y#2 = (byte) initplottables::y#1 [phi:initplottables::@4->initplottables::@3#1] -- register_copy + //SEG99 initplottables::@3 b3: - //SEG99 [52] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=xby_band_coby1 + //SEG100 [53] (byte~) initplottables::$6 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 ] -- zpby1=xby_band_coby1 txa and #7 sta _6 - //SEG100 [53] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- aby=_lo_zpptrby1 + //SEG101 [54] (byte~) initplottables::$7 ← < (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$6 initplottables::$7 ] -- aby=_lo_zpptrby1 lda yoffs - //SEG101 [54] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- aby=zpby1_bor_aby + //SEG102 [55] (byte~) initplottables::$8 ← (byte~) initplottables::$6 | (byte~) initplottables::$7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$8 ] -- aby=zpby1_bor_aby ora _6 - //SEG102 [55] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby + //SEG103 [56] *((const byte[]) plot_ylo#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$8 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby sta plot_ylo,x - //SEG103 [56] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- aby=_hi_zpptrby1 + //SEG104 [57] (byte~) initplottables::$9 ← > (byte*) initplottables::yoffs#2 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$9 ] -- aby=_hi_zpptrby1 lda yoffs+1 - //SEG104 [57] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby + //SEG105 [58] *((const byte[]) plot_yhi#0 + (byte) initplottables::y#2) ← (byte~) initplottables::$9 [ initplottables::y#2 initplottables::yoffs#2 ] -- cowo1_staridx_xby=aby sta plot_yhi,x - //SEG105 [58] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- aby=xby_band_coby1 + //SEG106 [59] (byte~) initplottables::$10 ← (byte) initplottables::y#2 & (byte) 7 [ initplottables::y#2 initplottables::yoffs#2 initplottables::$10 ] -- aby=xby_band_coby1 txa and #7 - //SEG106 [59] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- aby_neq_coby1_then_la1 + //SEG107 [60] if((byte~) initplottables::$10!=(byte) 7) goto initplottables::@4 [ initplottables::y#2 initplottables::yoffs#2 ] -- aby_neq_coby1_then_la1 cmp #7 bne b4 - //SEG107 initplottables::@7 - //SEG108 [60] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 + //SEG108 initplottables::@7 + //SEG109 [61] (byte*) initplottables::yoffs#1 ← (byte*) initplottables::yoffs#2 + (word) 320 [ initplottables::y#2 initplottables::yoffs#1 ] -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -8886,82 +8933,82 @@ initplottables: { lda yoffs+1 adc #>$140 sta yoffs+1 - //SEG109 [61] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] - //SEG110 [61] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy - //SEG111 initplottables::@4 + //SEG110 [62] phi from initplottables::@3 initplottables::@7 to initplottables::@4 [phi:initplottables::@3/initplottables::@7->initplottables::@4] + //SEG111 [62] phi (byte*) initplottables::yoffs#4 = (byte*) initplottables::yoffs#2 [phi:initplottables::@3/initplottables::@7->initplottables::@4#0] -- register_copy + //SEG112 initplottables::@4 b4: - //SEG112 [62] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby=_inc_xby + //SEG113 [63] (byte) initplottables::y#1 ← ++ (byte) initplottables::y#2 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby=_inc_xby inx - //SEG113 [63] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby_neq_0_then_la1 + //SEG114 [64] if((byte) initplottables::y#1!=(byte) 0) goto initplottables::@3 [ initplottables::y#1 initplottables::yoffs#4 ] -- xby_neq_0_then_la1 cpx #0 bne b3 - //SEG114 initplottables::@return - //SEG115 [64] return [ ] + //SEG115 initplottables::@return + //SEG116 [65] return [ ] rts - //SEG116 initplottables::@10 + //SEG117 initplottables::@10 b10: - //SEG117 [48] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] - //SEG118 [48] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy + //SEG118 [49] phi from initplottables::@10 to initplottables::@2 [phi:initplottables::@10->initplottables::@2] + //SEG119 [49] phi (byte) initplottables::bit#4 = (byte) initplottables::bit#1 [phi:initplottables::@10->initplottables::@2#0] -- register_copy jmp b2 } -//SEG119 initscreen +//SEG120 initscreen initscreen: { .label b = 6 .label c = 6 - //SEG120 [66] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] - //SEG121 [66] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 + //SEG121 [67] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG122 [67] phi (byte*) initscreen::b#2 = (const byte*) BITMAP#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 lda #BITMAP sta b+1 - //SEG122 [66] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] - //SEG123 [66] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy - //SEG124 initscreen::@1 + //SEG123 [67] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG124 [67] phi (byte*) initscreen::b#2 = (byte*) initscreen::b#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy + //SEG125 initscreen::@1 b1: - //SEG125 [67] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 + //SEG126 [68] *((byte*) initscreen::b#2) ← (byte) 0 [ initscreen::b#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #0 sta (b),y - //SEG126 [68] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG127 [69] (byte*) initscreen::b#1 ← ++ (byte*) initscreen::b#2 [ initscreen::b#1 ] -- zpptrby1=_inc_zpptrby1 inc b bne !+ inc b+1 !: - //SEG127 [69] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG128 [70] if((byte*) initscreen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto initscreen::@1 [ initscreen::b#1 ] -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 lda b cmp #initscreen::@2] - //SEG129 [70] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 + //SEG129 [71] phi from initscreen::@1 to initscreen::@2 [phi:initscreen::@1->initscreen::@2] + //SEG130 [71] phi (byte*) initscreen::c#2 = (const byte*) SCREEN#0 [phi:initscreen::@1->initscreen::@2#0] -- zpptrby1=cowo1 lda #SCREEN sta c+1 - //SEG130 [70] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] - //SEG131 [70] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy - //SEG132 initscreen::@2 + //SEG131 [71] phi from initscreen::@2 to initscreen::@2 [phi:initscreen::@2->initscreen::@2] + //SEG132 [71] phi (byte*) initscreen::c#2 = (byte*) initscreen::c#1 [phi:initscreen::@2->initscreen::@2#0] -- register_copy + //SEG133 initscreen::@2 b2: - //SEG133 [71] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 + //SEG134 [72] *((byte*) initscreen::c#2) ← (byte) 20 [ initscreen::c#2 ] -- _star_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y - //SEG134 [72] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 + //SEG135 [73] (byte*) initscreen::c#1 ← ++ (byte*) initscreen::c#2 [ initscreen::c#1 ] -- zpptrby1=_inc_zpptrby1 inc c bne !+ inc c+1 !: - //SEG135 [73] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 + //SEG136 [74] if((byte*) initscreen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto initscreen::@2 [ initscreen::c#1 ] -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 lda c cmp #