diff --git a/src/main/java/dk/camelot64/kickc/Compiler.java b/src/main/java/dk/camelot64/kickc/Compiler.java index 5318b1162..a0cc5a532 100644 --- a/src/main/java/dk/camelot64/kickc/Compiler.java +++ b/src/main/java/dk/camelot64/kickc/Compiler.java @@ -79,7 +79,7 @@ public class Compiler { program.getLog().append(program.getRegisterUpliftProgram().toString((program.getVariableRegisterWeights()))); // Attempt uplifting registers through a lot of combinations - new Pass3RegisterUpliftCombinations(program).performUplift(30_000); + new Pass3RegisterUpliftCombinations(program).performUplift(10_000); // Attempt uplifting registers one at a time to catch remaining potential not realized by combination search new Pass3RegisterUpliftRemains(program).performUplift(); diff --git a/src/main/java/dk/camelot64/kickc/asm/fragment/zpptrby1_lt_cowo1_then_la1.asm b/src/main/java/dk/camelot64/kickc/asm/fragment/zpptrby1_lt_cowo1_then_la1.asm new file mode 100644 index 000000000..5e43a608f --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/asm/fragment/zpptrby1_lt_cowo1_then_la1.asm @@ -0,0 +1,8 @@ +lda {zpptrby1}+1 +cmp #>{cowo1} +bcc {la1} +bne !+ +lda {zpptrby1} +cmp #<{cowo1} +bcc {la1} +!: \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.asm b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.asm index ad073d225..dce837f65 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.asm @@ -49,11 +49,13 @@ addpoint_from_B7: ldy #5 lda #31 jsr addpoint +main__B8: + jsr initscreen main__B1: jsr render -main__B9: - jsr animate main__B10: + jsr animate +main__B11: jmp main__B1 main__Breturn: rts @@ -132,10 +134,6 @@ animate__B1: jmp animate__B2 render: render__B1_from_render: - lda #<1024 - sta 5 - lda #>1024 - sta 5+1 lda #<55296 sta 3 lda #>55296 @@ -146,33 +144,23 @@ render__B1_from_B3: render__B1: render__B2_from_B1: lda #0 - sta 7 + sta 5 render__B2_from_B5: render__B2: - lda 7 - sta 11 + lda 5 + sta 9 lda 2 - sta 12 + sta 10 jsr findcol render__B5: - lda 10 - ldy 7 + lda 8 + ldy 5 sta (3),y - lda #230 - ldy 7 - sta (5),y - inc 7 - lda 7 + inc 5 + lda 5 cmp #40 bcc render__B2_from_B5 render__B3: - lda 5 - clc - adc #40 - sta 5 - bcc !+ - inc 5+1 -!: lda 3 clc adc #40 @@ -189,39 +177,41 @@ render__Breturn: findcol: findcol__B1_from_findcol: lda #0 - sta 10 - lda #255 sta 8 + lda #255 + sta 6 ldy #0 findcol__B1_from_B13: findcol__B1: - lda 4096,y - ldx 4352,y - cmp 11 + ldx 4096,y + lda 4352,y + sta 11 + cpx 9 beq findcol__B2 findcol__B3: - cmp 11 + cpx 9 bcs findcol__B6 findcol__B7: - eor #255 - sec - adc 11 - sta 9 -findcol__B8_from_B7: -findcol__B8: - cpx 12 - bcs findcol__B9 -findcol__B10: stx 255 - lda 12 + lda 9 sec sbc 255 + sta 7 +findcol__B8_from_B7: +findcol__B8: + lda 10 + cmp 11 + bcc findcol__B9 +findcol__B10: + lda 10 + sec + sbc 11 clc - adc 9 + adc 7 tax findcol__B11_from_B10: findcol__B11: - cpx 8 + cpx 6 bcc findcol__B12 findcol__B13_from_B11: findcol__B13: @@ -232,34 +222,61 @@ findcol__Breturn_from_B13: jmp findcol__Breturn findcol__Breturn_from_B2: lda #0 - sta 10 + sta 8 findcol__Breturn: rts findcol__B12: lda 4608,y - sta 10 - stx 8 + sta 8 + stx 6 findcol__B13_from_B12: jmp findcol__B13 findcol__B9: - txa + lda 11 sec - sbc 12 + sbc 10 clc - adc 9 + adc 7 tax findcol__B11_from_B9: jmp findcol__B11 findcol__B6: + txa sec - sbc 11 - sta 9 + sbc 9 + sta 7 findcol__B8_from_B6: jmp findcol__B8 findcol__B2: - cpx 12 + lda 10 + cmp 11 beq findcol__Breturn_from_B2 jmp findcol__B3 +initscreen: +initscreen__B1_from_initscreen: + lda #<1024 + sta 3 + lda #>1024 + sta 3+1 +initscreen__B1_from_B1: +initscreen__B1: + ldy #0 + lda #230 + sta (3),y + inc 3 + bne !+ + inc 3+1 +!: + lda 3+1 + cmp #>2048 + bcc initscreen__B1_from_B1 + bne !+ + lda 3 + cmp #<2048 + bcc initscreen__B1_from_B1 +!: +initscreen__Breturn: + rts addpoint: sta 4096,y txa diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg index c05232745..3b05115a6 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg @@ -19,172 +19,183 @@ main::@6: from main::@5 to:main::@7 main::@7: from main::@6 [6] call addpoint param-assignment [ findcol::return#0 ] + to:main::@8 +main::@8: from main::@7 + [7] call initscreen param-assignment [ findcol::return#0 ] to:main::@1 -main::@1: from main::@10 main::@7 - [7] call render param-assignment [ findcol::return#0 ] - to:main::@9 -main::@9: from main::@1 - [8] call animate param-assignment [ findcol::return#0 ] +main::@1: from main::@11 main::@8 + [8] call render param-assignment [ findcol::return#0 ] to:main::@10 -main::@10: from main::@9 - [9] if(true) goto main::@1 [ findcol::return#0 ] +main::@10: from main::@1 + [9] call animate param-assignment [ findcol::return#0 ] + to:main::@11 +main::@11: from main::@10 + [10] if(true) goto main::@1 [ findcol::return#0 ] to:main::@return -main::@return: from main::@10 - [10] return [ findcol::return#0 ] +main::@return: from main::@11 + [11] return [ findcol::return#0 ] to:@RETURN -animate: from main::@9 - [11] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] - [12] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] - [13] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] - [14] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] - [15] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] +animate: from main::@10 + [12] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] + [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] + [14] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] + [15] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] + [16] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] to:animate::@2 animate::@2: from animate animate::@1 - [16] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] - [17] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] - [18] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] - [19] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] - [20] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] + [17] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] + [18] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] + [19] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] + [20] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] + [21] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] to:animate::@4 animate::@4: from animate::@2 animate::@3 - [21] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] - [22] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] - [23] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] - [24] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] - [25] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] + [22] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] + [23] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] + [24] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] + [25] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] + [26] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] to:animate::@6 animate::@6: from animate::@4 animate::@5 - [26] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] - [27] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] - [28] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] - [29] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] - [30] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] + [27] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] + [28] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] + [29] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] + [30] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] + [31] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] to:animate::@8 animate::@8: from animate::@6 animate::@7 - [31] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] - [32] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] - [33] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] - [34] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] - [35] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] + [32] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] + [33] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] + [34] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] + [35] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] + [36] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] to:animate::@return animate::@return: from animate::@11 animate::@8 animate::@9 - [36] return [ findcol::return#0 ] + [37] return [ findcol::return#0 ] to:@RETURN animate::@9: from animate::@8 - [37] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] - [38] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] - [39] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] - [40] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] - [41] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] - [42] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] + [38] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] + [39] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] + [40] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] + [41] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] + [42] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] + [43] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] to:animate::@return animate::@11: from animate::@9 - [43] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] - [44] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] - [45] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] + [44] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] + [45] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] + [46] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] to:animate::@return animate::@7: from animate::@6 - [46] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] + [47] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] to:animate::@8 animate::@5: from animate::@4 - [47] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] + [48] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] to:animate::@6 animate::@3: from animate::@2 - [48] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] + [49] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] to:animate::@4 animate::@1: from animate - [49] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] + [50] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] to:animate::@2 render: from main::@1 to:render::@1 render::@1: from render render::@3 - [50] (byte*) render::chrline#2 ← phi( render/(word) 1024 render::@3/(byte*) render::chrline#1 ) [ render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [50] (byte*) render::colline#2 ← phi( render/(word) 55296 render::@3/(byte*) render::colline#1 ) [ render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [50] (byte) render::y#2 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) [ render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] + [51] (byte*) render::colline#2 ← phi( render/(word) 55296 render::@3/(byte*) render::colline#1 ) [ render::y#2 findcol::return#0 render::colline#2 ] + [51] (byte) render::y#2 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) [ render::y#2 findcol::return#0 render::colline#2 ] to:render::@2 render::@2: from render::@1 render::@5 - [51] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [52] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 ] - [53] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] - [54] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] + [52] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] + [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 ] + [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] + [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] to:render::@5 render::@5: from render::@2 - [55] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 render::chrline#2 ] - [56] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [57] *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) 230 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] + [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 ] + [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] + [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 ] + [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 ] to:render::@3 render::@3: from render::@5 - [60] (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 [ render::chrline#1 render::y#2 findcol::return#0 render::colline#2 ] - [61] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::chrline#1 render::y#2 findcol::return#0 ] - [62] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 render::chrline#1 findcol::return#0 ] - [63] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 render::chrline#1 findcol::return#0 ] + [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 findcol::return#0 ] + [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 findcol::return#0 ] + [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 findcol::return#0 ] to:render::@return render::@return: from render::@3 - [64] return [ findcol::return#0 ] + [63] return [ findcol::return#0 ] to:@RETURN findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 - [65] (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [65] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [65] (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [66] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [67] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] - [68] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [64] (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [64] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [64] (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@3 findcol::@3: from findcol::@1 findcol::@2 - [69] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@7 findcol::@7: from findcol::@3 - [70] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@8 findcol::@8: from findcol::@6 findcol::@7 - [71] (byte) findcol::diff#4 ← phi( findcol::@6/(byte) findcol::diff#0 findcol::@7/(byte) findcol::diff#1 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] - [72] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] + [70] (byte) findcol::diff#4 ← phi( findcol::@6/(byte) findcol::diff#0 findcol::@7/(byte) findcol::diff#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] + [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@10 findcol::@10: from findcol::@8 - [73] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] - [74] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] + [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] + [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@11 findcol::@11: from findcol::@10 findcol::@9 - [75] (byte) findcol::diff#6 ← phi( findcol::@10/(byte) findcol::diff#3 findcol::@9/(byte) findcol::diff#2 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] - [76] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] + [74] (byte) findcol::diff#6 ← phi( findcol::@10/(byte) findcol::diff#3 findcol::@9/(byte) findcol::diff#2 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] + [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@13 findcol::@13: from findcol::@11 findcol::@12 - [77] (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte~) findcol::diff#13 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 ] - [77] (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 ] - [78] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] - [79] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] + [76] (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte~) findcol::diff#13 ) [ render::x#2 render::y#2 render::colline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 ] + [76] (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 ] + [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] + [78] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] to:findcol::@return findcol::@return: from findcol::@13 findcol::@2 - [80] (byte) findcol::return#0 ← phi( findcol::@13/(byte) findcol::mincol#2 findcol::@2/(byte) 0 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] - [81] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] + [79] (byte) findcol::return#0 ← phi( findcol::@13/(byte) findcol::mincol#2 findcol::@2/(byte) 0 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] + [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] to:@RETURN findcol::@12: from findcol::@11 - [82] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] - [83] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] + [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] + [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] to:findcol::@13 findcol::@9: from findcol::@8 - [84] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] - [85] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] + [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] + [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@11 findcol::@6: from findcol::@3 - [86] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@8 findcol::@2: from findcol::@1 - [87] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@3 +initscreen: from main::@8 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + [87] (byte*) initscreen::screen#2 ← phi( initscreen/(word) 1024 initscreen::@1/(byte*) initscreen::screen#1 ) [ findcol::return#0 initscreen::screen#2 ] + [88] *((byte*) initscreen::screen#2) ← (byte) 230 [ findcol::return#0 initscreen::screen#2 ] + [89] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ findcol::return#0 initscreen::screen#1 ] + [90] if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 [ findcol::return#0 initscreen::screen#1 ] + to:initscreen::@return +initscreen::@return: from initscreen::@1 + [91] return [ findcol::return#0 ] + to:@RETURN addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 - [88] (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [88] (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [88] (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [88] (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [89] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] - [90] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] - [91] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] + [92] (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [92] (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [92] (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [92] (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [93] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] + [94] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] + [95] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] to:addpoint::@return addpoint::@return: from addpoint - [92] return [ findcol::return#0 ] + [96] return [ findcol::return#0 ] to:@RETURN diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log index 7d7f8ed21..6c394db56 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log @@ -21,6 +21,7 @@ void main() { addpoint(3, 34, 2, 4); addpoint(4, 21, 17, 5); addpoint(5, 31, 22, 7); + initscreen(); do { render(); animate(); @@ -60,20 +61,25 @@ void addpoint(byte idx, byte x, byte y, byte c) { COLS[idx] = c; } +void initscreen() { + byte* screen = SCREEN; + do { + *screen = FILL; + } while(++screen<$0800) + +} + void render() { - byte* chrline = SCREEN; byte* colline = COLORS; byte y=0; do { - byte x=0; + byte x=0; do { byte col = findcol(x, y); colline[x] = col; - chrline[x] = FILL; } while(++x < 40) - chrline = chrline+40; colline = colline+40; - } while(++y < 25) + } while(++y < 25) } byte findcol(byte x, byte y) { @@ -109,6 +115,7 @@ byte findcol(byte x, byte y) { +Adding pre/post-modifier (byte*) initscreen::screen ← ++ (byte*) initscreen::screen Adding pre/post-modifier (byte) render::x ← ++ (byte) render::x Adding pre/post-modifier (byte) render::y ← ++ (byte) render::y Adding pre/post-modifier (byte) findcol::i ← ++ (byte) findcol::i @@ -128,9 +135,10 @@ PROGRAM (void~) main::$3 ← call addpoint (byte) 3 (byte) 34 (byte) 2 (byte) 4 (void~) main::$4 ← call addpoint (byte) 4 (byte) 21 (byte) 17 (byte) 5 (void~) main::$5 ← call addpoint (byte) 5 (byte) 31 (byte) 22 (byte) 7 + (void~) main::$6 ← call initscreen main::@1: - (void~) main::$6 ← call render - (void~) main::$7 ← call animate + (void~) main::$7 ← call render + (void~) main::$8 ← call animate if(true) goto main::@1 main::@return: return @@ -208,8 +216,17 @@ animate::@return: addpoint::@return: return endproc // addpoint() + proc (void()) initscreen() + (byte*) initscreen::screen ← (byte*) SCREEN +initscreen::@1: + *((byte*) initscreen::screen) ← (byte) FILL + (byte*) initscreen::screen ← ++ (byte*) initscreen::screen + (boolean~) initscreen::$0 ← (byte*) initscreen::screen < (word) 2048 + if((boolean~) initscreen::$0) goto initscreen::@1 +initscreen::@return: + return + endproc // initscreen() proc (void()) render() - (byte*) render::chrline ← (byte*) SCREEN (byte*) render::colline ← (byte*) COLORS (byte) render::y ← (byte) 0 render::@1: @@ -218,17 +235,14 @@ render::@2: (byte~) render::$0 ← call findcol (byte) render::x (byte) render::y (byte) render::col ← (byte~) render::$0 *((byte*) render::colline + (byte) render::x) ← (byte) render::col - *((byte*) render::chrline + (byte) render::x) ← (byte) FILL (byte) render::x ← ++ (byte) render::x (boolean~) render::$1 ← (byte) render::x < (byte) 40 if((boolean~) render::$1) goto render::@2 - (byte*~) render::$2 ← (byte*) render::chrline + (byte) 40 - (byte*) render::chrline ← (byte*~) render::$2 - (byte*~) render::$3 ← (byte*) render::colline + (byte) 40 - (byte*) render::colline ← (byte*~) render::$3 + (byte*~) render::$2 ← (byte*) render::colline + (byte) 40 + (byte*) render::colline ← (byte*~) render::$2 (byte) render::y ← ++ (byte) render::y - (boolean~) render::$4 ← (byte) render::y < (byte) 25 - if((boolean~) render::$4) goto render::@1 + (boolean~) render::$3 ← (byte) render::y < (byte) 25 + if((boolean~) render::$3) goto render::@1 render::@return: return endproc // render() @@ -388,6 +402,11 @@ SYMBOLS (byte) findcol::xp (byte) findcol::y (byte) findcol::yp +(void()) initscreen() +(boolean~) initscreen::$0 +(label) initscreen::@1 +(label) initscreen::@return +(byte*) initscreen::screen (void()) main() (void~) main::$0 (void~) main::$1 @@ -397,6 +416,7 @@ SYMBOLS (void~) main::$5 (void~) main::$6 (void~) main::$7 +(void~) main::$8 (label) main::@1 (label) main::@return (byte) numpoints @@ -404,12 +424,10 @@ SYMBOLS (byte~) render::$0 (boolean~) render::$1 (byte*~) render::$2 -(byte*~) render::$3 -(boolean~) render::$4 +(boolean~) render::$3 (label) render::@1 (label) render::@2 (label) render::@return -(byte*) render::chrline (byte) render::col (byte*) render::colline (byte) render::x @@ -433,10 +451,11 @@ main: from (void~) main::$3 ← call addpoint (byte) 3 (byte) 34 (byte) 2 (byte) 4 (void~) main::$4 ← call addpoint (byte) 4 (byte) 21 (byte) 17 (byte) 5 (void~) main::$5 ← call addpoint (byte) 5 (byte) 31 (byte) 22 (byte) 7 + (void~) main::$6 ← call initscreen to:main::@1 main::@1: from main main::@1 - (void~) main::$6 ← call render - (void~) main::$7 ← call animate + (void~) main::$7 ← call render + (void~) main::$8 ← call animate if(true) goto main::@1 to:main::@2 main::@2: from main::@1 @@ -555,8 +574,23 @@ addpoint::@return: from addpoint to:@RETURN @3: from @2 to:@4 +initscreen: from + (byte*) initscreen::screen ← (byte*) SCREEN + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + *((byte*) initscreen::screen) ← (byte) FILL + (byte*) initscreen::screen ← ++ (byte*) initscreen::screen + (boolean~) initscreen::$0 ← (byte*) initscreen::screen < (word) 2048 + if((boolean~) initscreen::$0) goto initscreen::@1 + to:initscreen::@2 +initscreen::@2: from initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@2 + return + to:@RETURN +@4: from @3 + to:@5 render: from - (byte*) render::chrline ← (byte*) SCREEN (byte*) render::colline ← (byte*) COLORS (byte) render::y ← (byte) 0 to:render::@1 @@ -567,27 +601,24 @@ render::@2: from render::@1 render::@2 (byte~) render::$0 ← call findcol (byte) render::x (byte) render::y (byte) render::col ← (byte~) render::$0 *((byte*) render::colline + (byte) render::x) ← (byte) render::col - *((byte*) render::chrline + (byte) render::x) ← (byte) FILL (byte) render::x ← ++ (byte) render::x (boolean~) render::$1 ← (byte) render::x < (byte) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: from render::@2 - (byte*~) render::$2 ← (byte*) render::chrline + (byte) 40 - (byte*) render::chrline ← (byte*~) render::$2 - (byte*~) render::$3 ← (byte*) render::colline + (byte) 40 - (byte*) render::colline ← (byte*~) render::$3 + (byte*~) render::$2 ← (byte*) render::colline + (byte) 40 + (byte*) render::colline ← (byte*~) render::$2 (byte) render::y ← ++ (byte) render::y - (boolean~) render::$4 ← (byte) render::y < (byte) 25 - if((boolean~) render::$4) goto render::@1 + (boolean~) render::$3 ← (byte) render::y < (byte) 25 + if((boolean~) render::$3) goto render::@1 to:render::@4 render::@4: from render::@3 to:render::@return render::@return: from render::@4 return to:@RETURN -@4: from @3 - to:@5 +@5: from @4 + to:@6 findcol: from (byte) findcol::mindiff ← (byte) 255 (byte) findcol::mincol ← (byte) 0 @@ -685,9 +716,9 @@ findcol::@27: from findcol::@13 to:findcol::@return findcol::@28: from to:findcol::@return -@5: from @4 +@6: from @5 to:@END -@END: from @5 +@END: from @6 Removing empty block main::@2 Removing empty block @1 @@ -707,8 +738,10 @@ Removing empty block animate::@12 Removing empty block animate::@24 Removing empty block @2 Removing empty block @3 -Removing empty block render::@4 +Removing empty block initscreen::@2 Removing empty block @4 +Removing empty block render::@4 +Removing empty block @5 Removing empty block findcol::@14 Removing empty block findcol::@15 Removing empty block findcol::@16 @@ -724,7 +757,7 @@ Removing empty block findcol::@24 Removing empty block findcol::@25 Removing empty block findcol::@26 Removing empty block findcol::@28 -Removing empty block @5 +Removing empty block @6 CONTROL FLOW GRAPH @BEGIN: from (byte*) SCREEN ← (word) 1024 @@ -743,10 +776,11 @@ main: from (void~) main::$3 ← call addpoint (byte) 3 (byte) 34 (byte) 2 (byte) 4 (void~) main::$4 ← call addpoint (byte) 4 (byte) 21 (byte) 17 (byte) 5 (void~) main::$5 ← call addpoint (byte) 5 (byte) 31 (byte) 22 (byte) 7 + (void~) main::$6 ← call initscreen to:main::@1 main::@1: from main main::@1 - (void~) main::$6 ← call render - (void~) main::$7 ← call animate + (void~) main::$7 ← call render + (void~) main::$8 ← call animate if(true) goto main::@1 to:main::@return main::@return: from main::@1 @@ -829,8 +863,19 @@ addpoint: from addpoint::@return: from addpoint return to:@RETURN +initscreen: from + (byte*) initscreen::screen ← (byte*) SCREEN + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + *((byte*) initscreen::screen) ← (byte) FILL + (byte*) initscreen::screen ← ++ (byte*) initscreen::screen + (boolean~) initscreen::$0 ← (byte*) initscreen::screen < (word) 2048 + if((boolean~) initscreen::$0) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from - (byte*) render::chrline ← (byte*) SCREEN (byte*) render::colline ← (byte*) COLORS (byte) render::y ← (byte) 0 to:render::@1 @@ -841,19 +886,16 @@ render::@2: from render::@1 render::@2 (byte~) render::$0 ← call findcol (byte) render::x (byte) render::y (byte) render::col ← (byte~) render::$0 *((byte*) render::colline + (byte) render::x) ← (byte) render::col - *((byte*) render::chrline + (byte) render::x) ← (byte) FILL (byte) render::x ← ++ (byte) render::x (boolean~) render::$1 ← (byte) render::x < (byte) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: from render::@2 - (byte*~) render::$2 ← (byte*) render::chrline + (byte) 40 - (byte*) render::chrline ← (byte*~) render::$2 - (byte*~) render::$3 ← (byte*) render::colline + (byte) 40 - (byte*) render::colline ← (byte*~) render::$3 + (byte*~) render::$2 ← (byte*) render::colline + (byte) 40 + (byte*) render::colline ← (byte*~) render::$2 (byte) render::y ← ++ (byte) render::y - (boolean~) render::$4 ← (byte) render::y < (byte) 25 - if((boolean~) render::$4) goto render::@1 + (boolean~) render::$3 ← (byte) render::y < (byte) 25 + if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: from render::@3 return @@ -937,8 +979,8 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL (byte[256]) YPOS ← (word) 4352 (byte[256]) COLS ← (word) 4608 call main param-assignment - to:@6 -@6: from @BEGIN + to:@7 +@7: from @BEGIN to:@END main: from @BEGIN (byte) addpoint::idx ← (byte) 0 @@ -983,20 +1025,23 @@ main::@7: from main::@6 call addpoint param-assignment to:main::@8 main::@8: from main::@7 - to:main::@1 -main::@1: from main::@10 main::@8 - call render param-assignment + call initscreen param-assignment to:main::@9 -main::@9: from main::@1 - call animate param-assignment +main::@9: from main::@8 + to:main::@1 +main::@1: from main::@11 main::@9 + call render param-assignment to:main::@10 -main::@10: from main::@9 +main::@10: from main::@1 + call animate param-assignment + to:main::@11 +main::@11: from main::@10 if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 +animate: from main::@10 (byte~) animate::$0 ← (byte[256]) XPOS *idx (byte) 0 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((byte[256]) XPOS + (byte) 0) ← (byte~) animate::$1 @@ -1073,8 +1118,19 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + (byte*) initscreen::screen ← (byte*) SCREEN + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + *((byte*) initscreen::screen) ← (byte) FILL + (byte*) initscreen::screen ← ++ (byte*) initscreen::screen + (boolean~) initscreen::$0 ← (byte*) initscreen::screen < (word) 2048 + if((boolean~) initscreen::$0) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 - (byte*) render::chrline ← (byte*) SCREEN (byte*) render::colline ← (byte*) COLORS (byte) render::y ← (byte) 0 to:render::@1 @@ -1090,19 +1146,16 @@ render::@5: from render::@2 (byte~) render::$0 ← (byte) findcol::return (byte) render::col ← (byte~) render::$0 *((byte*) render::colline + (byte) render::x) ← (byte) render::col - *((byte*) render::chrline + (byte) render::x) ← (byte) FILL (byte) render::x ← ++ (byte) render::x (boolean~) render::$1 ← (byte) render::x < (byte) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte*~) render::$2 ← (byte*) render::chrline + (byte) 40 - (byte*) render::chrline ← (byte*~) render::$2 - (byte*~) render::$3 ← (byte*) render::colline + (byte) 40 - (byte*) render::colline ← (byte*~) render::$3 + (byte*~) render::$2 ← (byte*) render::colline + (byte) 40 + (byte*) render::colline ← (byte*~) render::$2 (byte) render::y ← ++ (byte) render::y - (boolean~) render::$4 ← (byte) render::y < (byte) 25 - if((boolean~) render::$4) goto render::@1 + (boolean~) render::$3 ← (byte) render::y < (byte) 25 + if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: from render::@3 return @@ -1174,7 +1227,7 @@ findcol::@13: from findcol::@11 findcol::@12 findcol::@27: from findcol::@13 (byte) findcol::return ← (byte) findcol::mincol to:findcol::@return -@END: from @6 +@END: from @7 Completing Phi functions... Completing Phi functions... @@ -1195,6 +1248,7 @@ Completing Phi functions... Completing Phi functions... Completing Phi functions... Completing Phi functions... +Completing Phi functions... CONTROL FLOW GRAPH SSA @BEGIN: from (byte*) SCREEN#0 ← (word) 1024 @@ -1205,14 +1259,14 @@ CONTROL FLOW GRAPH SSA (byte[256]) YPOS#0 ← (word) 4352 (byte[256]) COLS#0 ← (word) 4608 call main param-assignment - to:@6 -@6: from @BEGIN + to:@7 +@7: from @BEGIN to:@END main: from @BEGIN - (byte) numpoints#27 ← phi( @BEGIN/(byte) numpoints#0 ) - (byte) FILL#15 ← phi( @BEGIN/(byte) FILL#0 ) - (byte*) COLORS#11 ← phi( @BEGIN/(byte*) COLORS#0 ) - (byte*) SCREEN#11 ← phi( @BEGIN/(byte*) SCREEN#0 ) + (byte) numpoints#28 ← phi( @BEGIN/(byte) numpoints#0 ) + (byte*) COLORS#12 ← phi( @BEGIN/(byte*) COLORS#0 ) + (byte) FILL#9 ← phi( @BEGIN/(byte) FILL#0 ) + (byte*) SCREEN#8 ← phi( @BEGIN/(byte*) SCREEN#0 ) (byte[256]) COLS#3 ← phi( @BEGIN/(byte[256]) COLS#0 ) (byte[256]) YPOS#13 ← phi( @BEGIN/(byte[256]) YPOS#0 ) (byte[256]) XPOS#13 ← phi( @BEGIN/(byte[256]) XPOS#0 ) @@ -1223,10 +1277,10 @@ main: from @BEGIN call addpoint param-assignment to:main::@3 main::@3: from main - (byte) numpoints#26 ← phi( main/(byte) numpoints#27 ) - (byte) FILL#14 ← phi( main/(byte) FILL#15 ) - (byte*) COLORS#10 ← phi( main/(byte*) COLORS#11 ) - (byte*) SCREEN#10 ← phi( main/(byte*) SCREEN#11 ) + (byte) numpoints#27 ← phi( main/(byte) numpoints#28 ) + (byte*) COLORS#11 ← phi( main/(byte*) COLORS#12 ) + (byte) FILL#8 ← phi( main/(byte) FILL#9 ) + (byte*) SCREEN#7 ← phi( main/(byte*) SCREEN#8 ) (byte[256]) COLS#4 ← phi( main/(byte[256]) COLS#3 ) (byte[256]) YPOS#14 ← phi( main/(byte[256]) YPOS#13 ) (byte[256]) XPOS#14 ← phi( main/(byte[256]) XPOS#13 ) @@ -1237,10 +1291,10 @@ main::@3: from main call addpoint param-assignment to:main::@4 main::@4: from main::@3 - (byte) numpoints#25 ← phi( main::@3/(byte) numpoints#26 ) - (byte) FILL#13 ← phi( main::@3/(byte) FILL#14 ) - (byte*) COLORS#9 ← phi( main::@3/(byte*) COLORS#10 ) - (byte*) SCREEN#9 ← phi( main::@3/(byte*) SCREEN#10 ) + (byte) numpoints#26 ← phi( main::@3/(byte) numpoints#27 ) + (byte*) COLORS#10 ← phi( main::@3/(byte*) COLORS#11 ) + (byte) FILL#7 ← phi( main::@3/(byte) FILL#8 ) + (byte*) SCREEN#6 ← phi( main::@3/(byte*) SCREEN#7 ) (byte[256]) COLS#5 ← phi( main::@3/(byte[256]) COLS#4 ) (byte[256]) YPOS#15 ← phi( main::@3/(byte[256]) YPOS#14 ) (byte[256]) XPOS#15 ← phi( main::@3/(byte[256]) XPOS#14 ) @@ -1251,10 +1305,10 @@ main::@4: from main::@3 call addpoint param-assignment to:main::@5 main::@5: from main::@4 - (byte) numpoints#24 ← phi( main::@4/(byte) numpoints#25 ) - (byte) FILL#12 ← phi( main::@4/(byte) FILL#13 ) - (byte*) COLORS#8 ← phi( main::@4/(byte*) COLORS#9 ) - (byte*) SCREEN#8 ← phi( main::@4/(byte*) SCREEN#9 ) + (byte) numpoints#25 ← phi( main::@4/(byte) numpoints#26 ) + (byte*) COLORS#9 ← phi( main::@4/(byte*) COLORS#10 ) + (byte) FILL#6 ← phi( main::@4/(byte) FILL#7 ) + (byte*) SCREEN#5 ← phi( main::@4/(byte*) SCREEN#6 ) (byte[256]) COLS#6 ← phi( main::@4/(byte[256]) COLS#5 ) (byte[256]) YPOS#16 ← phi( main::@4/(byte[256]) YPOS#15 ) (byte[256]) XPOS#16 ← phi( main::@4/(byte[256]) XPOS#15 ) @@ -1265,10 +1319,10 @@ main::@5: from main::@4 call addpoint param-assignment to:main::@6 main::@6: from main::@5 - (byte) numpoints#23 ← phi( main::@5/(byte) numpoints#24 ) - (byte) FILL#11 ← phi( main::@5/(byte) FILL#12 ) - (byte*) COLORS#7 ← phi( main::@5/(byte*) COLORS#8 ) - (byte*) SCREEN#7 ← phi( main::@5/(byte*) SCREEN#8 ) + (byte) numpoints#24 ← phi( main::@5/(byte) numpoints#25 ) + (byte*) COLORS#8 ← phi( main::@5/(byte*) COLORS#9 ) + (byte) FILL#5 ← phi( main::@5/(byte) FILL#6 ) + (byte*) SCREEN#4 ← phi( main::@5/(byte*) SCREEN#5 ) (byte[256]) COLS#7 ← phi( main::@5/(byte[256]) COLS#6 ) (byte[256]) YPOS#17 ← phi( main::@5/(byte[256]) YPOS#16 ) (byte[256]) XPOS#17 ← phi( main::@5/(byte[256]) XPOS#16 ) @@ -1279,10 +1333,10 @@ main::@6: from main::@5 call addpoint param-assignment to:main::@7 main::@7: from main::@6 - (byte) numpoints#21 ← phi( main::@6/(byte) numpoints#23 ) - (byte) FILL#9 ← phi( main::@6/(byte) FILL#11 ) - (byte*) COLORS#5 ← phi( main::@6/(byte*) COLORS#7 ) - (byte*) SCREEN#5 ← phi( main::@6/(byte*) SCREEN#7 ) + (byte) numpoints#23 ← phi( main::@6/(byte) numpoints#24 ) + (byte*) COLORS#7 ← phi( main::@6/(byte*) COLORS#8 ) + (byte) FILL#4 ← phi( main::@6/(byte) FILL#5 ) + (byte*) SCREEN#3 ← phi( main::@6/(byte*) SCREEN#4 ) (byte[256]) COLS#8 ← phi( main::@6/(byte[256]) COLS#7 ) (byte[256]) YPOS#18 ← phi( main::@6/(byte[256]) YPOS#17 ) (byte[256]) XPOS#18 ← phi( main::@6/(byte[256]) XPOS#17 ) @@ -1293,50 +1347,52 @@ main::@7: from main::@6 call addpoint param-assignment to:main::@8 main::@8: from main::@7 - (byte) numpoints#20 ← phi( main::@7/(byte) numpoints#21 ) - (byte[256]) COLS#27 ← phi( main::@7/(byte[256]) COLS#8 ) - (byte) FILL#8 ← phi( main::@7/(byte) FILL#9 ) - (byte[256]) YPOS#31 ← phi( main::@7/(byte[256]) YPOS#18 ) - (byte[256]) XPOS#28 ← phi( main::@7/(byte[256]) XPOS#18 ) - (byte*) COLORS#4 ← phi( main::@7/(byte*) COLORS#5 ) - (byte*) SCREEN#4 ← phi( main::@7/(byte*) SCREEN#5 ) - to:main::@1 -main::@1: from main::@10 main::@8 - (byte) numpoints#18 ← phi( main::@10/(byte) numpoints#19 main::@8/(byte) numpoints#20 ) - (byte[256]) COLS#25 ← phi( main::@10/(byte[256]) COLS#26 main::@8/(byte[256]) COLS#27 ) - (byte) FILL#6 ← phi( main::@10/(byte) FILL#7 main::@8/(byte) FILL#8 ) - (byte[256]) YPOS#25 ← phi( main::@10/(byte[256]) YPOS#30 main::@8/(byte[256]) YPOS#31 ) - (byte[256]) XPOS#21 ← phi( main::@10/(byte[256]) XPOS#27 main::@8/(byte[256]) XPOS#28 ) - (byte*) COLORS#2 ← phi( main::@10/(byte*) COLORS#3 main::@8/(byte*) COLORS#4 ) - (byte*) SCREEN#2 ← phi( main::@10/(byte*) SCREEN#3 main::@8/(byte*) SCREEN#4 ) - call render param-assignment + (byte) numpoints#21 ← phi( main::@7/(byte) numpoints#23 ) + (byte[256]) COLS#28 ← phi( main::@7/(byte[256]) COLS#8 ) + (byte[256]) YPOS#35 ← phi( main::@7/(byte[256]) YPOS#18 ) + (byte[256]) XPOS#33 ← phi( main::@7/(byte[256]) XPOS#18 ) + (byte*) COLORS#5 ← phi( main::@7/(byte*) COLORS#7 ) + (byte) FILL#3 ← phi( main::@7/(byte) FILL#4 ) + (byte*) SCREEN#2 ← phi( main::@7/(byte*) SCREEN#3 ) + call initscreen param-assignment to:main::@9 -main::@9: from main::@1 +main::@9: from main::@8 + (byte) numpoints#20 ← phi( main::@8/(byte) numpoints#21 ) + (byte[256]) COLS#27 ← phi( main::@8/(byte[256]) COLS#28 ) + (byte[256]) YPOS#31 ← phi( main::@8/(byte[256]) YPOS#35 ) + (byte[256]) XPOS#28 ← phi( main::@8/(byte[256]) XPOS#33 ) + (byte*) COLORS#4 ← phi( main::@8/(byte*) COLORS#5 ) + to:main::@1 +main::@1: from main::@11 main::@9 + (byte) numpoints#18 ← phi( main::@11/(byte) numpoints#19 main::@9/(byte) numpoints#20 ) + (byte[256]) COLS#25 ← phi( main::@11/(byte[256]) COLS#26 main::@9/(byte[256]) COLS#27 ) + (byte[256]) YPOS#25 ← phi( main::@11/(byte[256]) YPOS#30 main::@9/(byte[256]) YPOS#31 ) + (byte[256]) XPOS#21 ← phi( main::@11/(byte[256]) XPOS#27 main::@9/(byte[256]) XPOS#28 ) + (byte*) COLORS#2 ← phi( main::@11/(byte*) COLORS#3 main::@9/(byte*) COLORS#4 ) + call render param-assignment + to:main::@10 +main::@10: from main::@1 (byte) numpoints#22 ← phi( main::@1/(byte) numpoints#18 ) - (byte[256]) COLS#28 ← phi( main::@1/(byte[256]) COLS#25 ) - (byte) FILL#10 ← phi( main::@1/(byte) FILL#6 ) + (byte[256]) COLS#29 ← phi( main::@1/(byte[256]) COLS#25 ) (byte*) COLORS#6 ← phi( main::@1/(byte*) COLORS#2 ) - (byte*) SCREEN#6 ← phi( main::@1/(byte*) SCREEN#2 ) (byte[256]) YPOS#21 ← phi( main::@1/(byte[256]) YPOS#25 ) (byte[256]) XPOS#9 ← phi( main::@1/(byte[256]) XPOS#21 ) call animate param-assignment - to:main::@10 -main::@10: from main::@9 - (byte) numpoints#19 ← phi( main::@9/(byte) numpoints#22 ) - (byte[256]) COLS#26 ← phi( main::@9/(byte[256]) COLS#28 ) - (byte) FILL#7 ← phi( main::@9/(byte) FILL#10 ) - (byte[256]) YPOS#30 ← phi( main::@9/(byte[256]) YPOS#21 ) - (byte[256]) XPOS#27 ← phi( main::@9/(byte[256]) XPOS#9 ) - (byte*) COLORS#3 ← phi( main::@9/(byte*) COLORS#6 ) - (byte*) SCREEN#3 ← phi( main::@9/(byte*) SCREEN#6 ) + to:main::@11 +main::@11: from main::@10 + (byte) numpoints#19 ← phi( main::@10/(byte) numpoints#22 ) + (byte[256]) COLS#26 ← phi( main::@10/(byte[256]) COLS#29 ) + (byte[256]) YPOS#30 ← phi( main::@10/(byte[256]) YPOS#21 ) + (byte[256]) XPOS#27 ← phi( main::@10/(byte[256]) XPOS#9 ) + (byte*) COLORS#3 ← phi( main::@10/(byte*) COLORS#6 ) if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 - (byte[256]) YPOS#9 ← phi( main::@9/(byte[256]) YPOS#21 ) - (byte[256]) XPOS#1 ← phi( main::@9/(byte[256]) XPOS#9 ) +animate: from main::@10 + (byte[256]) YPOS#9 ← phi( main::@10/(byte[256]) YPOS#21 ) + (byte[256]) XPOS#1 ← phi( main::@10/(byte[256]) XPOS#9 ) (byte~) animate::$0 ← (byte[256]) XPOS#1 *idx (byte) 0 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((byte[256]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 @@ -1439,15 +1495,28 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + (byte) FILL#2 ← phi( main::@8/(byte) FILL#3 ) + (byte*) SCREEN#1 ← phi( main::@8/(byte*) SCREEN#2 ) + (byte*) initscreen::screen#0 ← (byte*) SCREEN#1 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(byte*) initscreen::screen#0 initscreen::@1/(byte*) initscreen::screen#1 ) + (byte) FILL#1 ← phi( initscreen/(byte) FILL#2 initscreen::@1/(byte) FILL#1 ) + *((byte*) initscreen::screen#2) ← (byte) FILL#1 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + (boolean~) initscreen::$0 ← (byte*) initscreen::screen#1 < (word) 2048 + if((boolean~) initscreen::$0) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 (byte) numpoints#16 ← phi( main::@1/(byte) numpoints#18 ) (byte[256]) COLS#23 ← phi( main::@1/(byte[256]) COLS#25 ) (byte[256]) YPOS#32 ← phi( main::@1/(byte[256]) YPOS#25 ) - (byte[256]) XPOS#33 ← phi( main::@1/(byte[256]) XPOS#21 ) - (byte) FILL#4 ← phi( main::@1/(byte) FILL#6 ) + (byte[256]) XPOS#34 ← phi( main::@1/(byte[256]) XPOS#21 ) (byte*) COLORS#1 ← phi( main::@1/(byte*) COLORS#2 ) - (byte*) SCREEN#1 ← phi( main::@1/(byte*) SCREEN#2 ) - (byte*) render::chrline#0 ← (byte*) SCREEN#1 (byte*) render::colline#0 ← (byte*) COLORS#1 (byte) render::y#0 ← (byte) 0 to:render::@1 @@ -1455,9 +1524,7 @@ render::@1: from render render::@3 (byte) numpoints#14 ← phi( render/(byte) numpoints#16 render::@3/(byte) numpoints#17 ) (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#24 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#32 render::@3/(byte[256]) YPOS#33 ) - (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#33 render::@3/(byte[256]) XPOS#34 ) - (byte*) render::chrline#5 ← phi( render/(byte*) render::chrline#0 render::@3/(byte*) render::chrline#1 ) - (byte) FILL#3 ← phi( render/(byte) FILL#4 render::@3/(byte) FILL#5 ) + (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#34 render::@3/(byte[256]) XPOS#35 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) render::y#0 render::@3/(byte) render::y#1 ) (byte) render::x#0 ← (byte) 0 @@ -1467,8 +1534,6 @@ render::@2: from render::@1 render::@5 (byte[256]) COLS#20 ← phi( render::@1/(byte[256]) COLS#21 render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#22 ← phi( render::@1/(byte[256]) YPOS#26 render::@5/(byte[256]) YPOS#27 ) (byte[256]) XPOS#24 ← phi( render::@1/(byte[256]) XPOS#29 render::@5/(byte[256]) XPOS#30 ) - (byte*) render::chrline#4 ← phi( render::@1/(byte*) render::chrline#5 render::@5/(byte*) render::chrline#2 ) - (byte) FILL#2 ← phi( render::@1/(byte) FILL#3 render::@5/(byte) FILL#1 ) (byte*) render::colline#4 ← phi( render::@1/(byte*) render::colline#5 render::@5/(byte*) render::colline#2 ) (byte) render::y#2 ← phi( render::@1/(byte) render::y#4 render::@5/(byte) render::y#5 ) (byte) render::x#2 ← phi( render::@1/(byte) render::x#0 render::@5/(byte) render::x#1 ) @@ -1482,15 +1547,12 @@ render::@5: from render::@2 (byte[256]) YPOS#27 ← phi( render::@2/(byte[256]) YPOS#22 ) (byte[256]) XPOS#30 ← phi( render::@2/(byte[256]) XPOS#24 ) (byte) render::y#5 ← phi( render::@2/(byte) render::y#2 ) - (byte*) render::chrline#2 ← phi( render::@2/(byte*) render::chrline#4 ) - (byte) FILL#1 ← phi( render::@2/(byte) FILL#2 ) (byte) render::x#3 ← phi( render::@2/(byte) render::x#2 ) (byte*) render::colline#2 ← phi( render::@2/(byte*) render::colline#4 ) (byte) findcol::return#4 ← phi( render::@2/(byte) findcol::return#0 ) (byte~) render::$0 ← (byte) findcol::return#4 (byte) render::col#0 ← (byte~) render::$0 *((byte*) render::colline#2 + (byte) render::x#3) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#3) ← (byte) FILL#1 (byte) render::x#1 ← ++ (byte) render::x#3 (boolean~) render::$1 ← (byte) render::x#1 < (byte) 40 if((boolean~) render::$1) goto render::@2 @@ -1499,18 +1561,14 @@ render::@3: from render::@5 (byte) numpoints#17 ← phi( render::@5/(byte) numpoints#15 ) (byte[256]) COLS#24 ← phi( render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#33 ← phi( render::@5/(byte[256]) YPOS#27 ) - (byte[256]) XPOS#34 ← phi( render::@5/(byte[256]) XPOS#30 ) - (byte) FILL#5 ← phi( render::@5/(byte) FILL#1 ) + (byte[256]) XPOS#35 ← phi( render::@5/(byte[256]) XPOS#30 ) (byte) render::y#3 ← phi( render::@5/(byte) render::y#5 ) (byte*) render::colline#3 ← phi( render::@5/(byte*) render::colline#2 ) - (byte*) render::chrline#3 ← phi( render::@5/(byte*) render::chrline#2 ) - (byte*~) render::$2 ← (byte*) render::chrline#3 + (byte) 40 - (byte*) render::chrline#1 ← (byte*~) render::$2 - (byte*~) render::$3 ← (byte*) render::colline#3 + (byte) 40 - (byte*) render::colline#1 ← (byte*~) render::$3 + (byte*~) render::$2 ← (byte*) render::colline#3 + (byte) 40 + (byte*) render::colline#1 ← (byte*~) render::$2 (byte) render::y#1 ← ++ (byte) render::y#3 - (boolean~) render::$4 ← (byte) render::y#1 < (byte) 25 - if((boolean~) render::$4) goto render::@1 + (boolean~) render::$3 ← (byte) render::y#1 < (byte) 25 + if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: from render::@3 return @@ -1545,8 +1603,8 @@ findcol::@1: from findcol findcol::@13 to:findcol::@3 findcol::@2: from findcol::@1 (byte) findcol::mincol#12 ← phi( findcol::@1/(byte) findcol::mincol#11 ) - (byte[256]) YPOS#38 ← phi( findcol::@1/(byte[256]) YPOS#8 ) - (byte[256]) XPOS#39 ← phi( findcol::@1/(byte[256]) XPOS#8 ) + (byte[256]) YPOS#39 ← phi( findcol::@1/(byte[256]) YPOS#8 ) + (byte[256]) XPOS#40 ← phi( findcol::@1/(byte[256]) XPOS#8 ) (byte) numpoints#11 ← phi( findcol::@1/(byte) numpoints#10 ) (byte) findcol::i#12 ← phi( findcol::@1/(byte) findcol::i#2 ) (byte[256]) COLS#17 ← phi( findcol::@1/(byte[256]) COLS#16 ) @@ -1560,8 +1618,8 @@ findcol::@2: from findcol::@1 to:findcol::@3 findcol::@3: from findcol::@1 findcol::@2 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@2/(byte) findcol::mincol#12 ) - (byte[256]) YPOS#37 ← phi( findcol::@1/(byte[256]) YPOS#8 findcol::@2/(byte[256]) YPOS#38 ) - (byte[256]) XPOS#38 ← phi( findcol::@1/(byte[256]) XPOS#8 findcol::@2/(byte[256]) XPOS#39 ) + (byte[256]) YPOS#38 ← phi( findcol::@1/(byte[256]) YPOS#8 findcol::@2/(byte[256]) YPOS#39 ) + (byte[256]) XPOS#39 ← phi( findcol::@1/(byte[256]) XPOS#8 findcol::@2/(byte[256]) XPOS#40 ) (byte) numpoints#9 ← phi( findcol::@1/(byte) numpoints#10 findcol::@2/(byte) numpoints#11 ) (byte) findcol::i#11 ← phi( findcol::@1/(byte) findcol::i#2 findcol::@2/(byte) findcol::i#12 ) (byte[256]) COLS#15 ← phi( findcol::@1/(byte[256]) COLS#16 findcol::@2/(byte[256]) COLS#17 ) @@ -1583,8 +1641,8 @@ findcol::@return: from findcol::@27 findcol::@4 to:@RETURN findcol::@6: from findcol::@3 (byte) findcol::mincol#8 ← phi( findcol::@3/(byte) findcol::mincol#10 ) - (byte[256]) YPOS#35 ← phi( findcol::@3/(byte[256]) YPOS#37 ) - (byte[256]) XPOS#36 ← phi( findcol::@3/(byte[256]) XPOS#38 ) + (byte[256]) YPOS#36 ← phi( findcol::@3/(byte[256]) YPOS#38 ) + (byte[256]) XPOS#37 ← phi( findcol::@3/(byte[256]) XPOS#39 ) (byte) numpoints#7 ← phi( findcol::@3/(byte) numpoints#9 ) (byte) findcol::i#9 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#13 ← phi( findcol::@3/(byte[256]) COLS#15 ) @@ -1598,8 +1656,8 @@ findcol::@6: from findcol::@3 to:findcol::@8 findcol::@7: from findcol::@3 (byte) findcol::mincol#9 ← phi( findcol::@3/(byte) findcol::mincol#10 ) - (byte[256]) YPOS#36 ← phi( findcol::@3/(byte[256]) YPOS#37 ) - (byte[256]) XPOS#37 ← phi( findcol::@3/(byte[256]) XPOS#38 ) + (byte[256]) YPOS#37 ← phi( findcol::@3/(byte[256]) YPOS#38 ) + (byte[256]) XPOS#38 ← phi( findcol::@3/(byte[256]) XPOS#39 ) (byte) numpoints#8 ← phi( findcol::@3/(byte) numpoints#9 ) (byte) findcol::i#10 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#14 ← phi( findcol::@3/(byte[256]) COLS#15 ) @@ -1614,8 +1672,8 @@ findcol::@7: from findcol::@3 findcol::@8: from findcol::@6 findcol::@7 (byte) findcol::mincol#7 ← phi( findcol::@6/(byte) findcol::mincol#8 findcol::@7/(byte) findcol::mincol#9 ) (byte) findcol::x#12 ← phi( findcol::@6/(byte) findcol::x#3 findcol::@7/(byte) findcol::x#4 ) - (byte[256]) YPOS#34 ← phi( findcol::@6/(byte[256]) YPOS#35 findcol::@7/(byte[256]) YPOS#36 ) - (byte[256]) XPOS#35 ← phi( findcol::@6/(byte[256]) XPOS#36 findcol::@7/(byte[256]) XPOS#37 ) + (byte[256]) YPOS#34 ← phi( findcol::@6/(byte[256]) YPOS#36 findcol::@7/(byte[256]) YPOS#37 ) + (byte[256]) XPOS#36 ← phi( findcol::@6/(byte[256]) XPOS#37 findcol::@7/(byte[256]) XPOS#38 ) (byte) numpoints#6 ← phi( findcol::@6/(byte) numpoints#7 findcol::@7/(byte) numpoints#8 ) (byte) findcol::i#8 ← phi( findcol::@6/(byte) findcol::i#9 findcol::@7/(byte) findcol::i#10 ) (byte[256]) COLS#12 ← phi( findcol::@6/(byte[256]) COLS#13 findcol::@7/(byte[256]) COLS#14 ) @@ -1630,7 +1688,7 @@ findcol::@9: from findcol::@8 (byte) findcol::mincol#6 ← phi( findcol::@8/(byte) findcol::mincol#7 ) (byte) findcol::x#11 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#29 ← phi( findcol::@8/(byte[256]) YPOS#34 ) - (byte[256]) XPOS#32 ← phi( findcol::@8/(byte[256]) XPOS#35 ) + (byte[256]) XPOS#32 ← phi( findcol::@8/(byte[256]) XPOS#36 ) (byte) numpoints#5 ← phi( findcol::@8/(byte) numpoints#6 ) (byte) findcol::i#7 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#11 ← phi( findcol::@8/(byte[256]) COLS#12 ) @@ -1646,7 +1704,7 @@ findcol::@10: from findcol::@8 (byte) findcol::mincol#5 ← phi( findcol::@8/(byte) findcol::mincol#7 ) (byte) findcol::x#10 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#28 ← phi( findcol::@8/(byte[256]) YPOS#34 ) - (byte[256]) XPOS#31 ← phi( findcol::@8/(byte[256]) XPOS#35 ) + (byte[256]) XPOS#31 ← phi( findcol::@8/(byte[256]) XPOS#36 ) (byte) numpoints#4 ← phi( findcol::@8/(byte) numpoints#6 ) (byte) findcol::i#6 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#10 ← phi( findcol::@8/(byte[256]) COLS#12 ) @@ -1703,7 +1761,7 @@ findcol::@27: from findcol::@13 (byte) findcol::mincol#2 ← phi( findcol::@13/(byte) findcol::mincol#3 ) (byte) findcol::return#3 ← (byte) findcol::mincol#2 to:findcol::@return -@END: from @6 +@END: from @7 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @BEGIN: from @@ -1715,14 +1773,14 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN (byte[256]) YPOS#0 ← (word) 4352 (byte[256]) COLS#0 ← (word) 4608 call main param-assignment - to:@6 -@6: from @BEGIN + to:@7 +@7: from @BEGIN to:@END main: from @BEGIN - (byte) numpoints#27 ← phi( @BEGIN/(byte) numpoints#0 ) - (byte) FILL#15 ← phi( @BEGIN/(byte) FILL#0 ) - (byte*) COLORS#11 ← phi( @BEGIN/(byte*) COLORS#0 ) - (byte*) SCREEN#11 ← phi( @BEGIN/(byte*) SCREEN#0 ) + (byte) numpoints#28 ← phi( @BEGIN/(byte) numpoints#0 ) + (byte*) COLORS#12 ← phi( @BEGIN/(byte*) COLORS#0 ) + (byte) FILL#9 ← phi( @BEGIN/(byte) FILL#0 ) + (byte*) SCREEN#8 ← phi( @BEGIN/(byte*) SCREEN#0 ) (byte[256]) COLS#3 ← phi( @BEGIN/(byte[256]) COLS#0 ) (byte[256]) YPOS#13 ← phi( @BEGIN/(byte[256]) YPOS#0 ) (byte[256]) XPOS#13 ← phi( @BEGIN/(byte[256]) XPOS#0 ) @@ -1733,10 +1791,10 @@ main: from @BEGIN call addpoint param-assignment to:main::@3 main::@3: from main - (byte) numpoints#26 ← phi( main/(byte) numpoints#27 ) - (byte) FILL#14 ← phi( main/(byte) FILL#15 ) - (byte*) COLORS#10 ← phi( main/(byte*) COLORS#11 ) - (byte*) SCREEN#10 ← phi( main/(byte*) SCREEN#11 ) + (byte) numpoints#27 ← phi( main/(byte) numpoints#28 ) + (byte*) COLORS#11 ← phi( main/(byte*) COLORS#12 ) + (byte) FILL#8 ← phi( main/(byte) FILL#9 ) + (byte*) SCREEN#7 ← phi( main/(byte*) SCREEN#8 ) (byte[256]) COLS#4 ← phi( main/(byte[256]) COLS#3 ) (byte[256]) YPOS#14 ← phi( main/(byte[256]) YPOS#13 ) (byte[256]) XPOS#14 ← phi( main/(byte[256]) XPOS#13 ) @@ -1747,10 +1805,10 @@ main::@3: from main call addpoint param-assignment to:main::@4 main::@4: from main::@3 - (byte) numpoints#25 ← phi( main::@3/(byte) numpoints#26 ) - (byte) FILL#13 ← phi( main::@3/(byte) FILL#14 ) - (byte*) COLORS#9 ← phi( main::@3/(byte*) COLORS#10 ) - (byte*) SCREEN#9 ← phi( main::@3/(byte*) SCREEN#10 ) + (byte) numpoints#26 ← phi( main::@3/(byte) numpoints#27 ) + (byte*) COLORS#10 ← phi( main::@3/(byte*) COLORS#11 ) + (byte) FILL#7 ← phi( main::@3/(byte) FILL#8 ) + (byte*) SCREEN#6 ← phi( main::@3/(byte*) SCREEN#7 ) (byte[256]) COLS#5 ← phi( main::@3/(byte[256]) COLS#4 ) (byte[256]) YPOS#15 ← phi( main::@3/(byte[256]) YPOS#14 ) (byte[256]) XPOS#15 ← phi( main::@3/(byte[256]) XPOS#14 ) @@ -1761,10 +1819,10 @@ main::@4: from main::@3 call addpoint param-assignment to:main::@5 main::@5: from main::@4 - (byte) numpoints#24 ← phi( main::@4/(byte) numpoints#25 ) - (byte) FILL#12 ← phi( main::@4/(byte) FILL#13 ) - (byte*) COLORS#8 ← phi( main::@4/(byte*) COLORS#9 ) - (byte*) SCREEN#8 ← phi( main::@4/(byte*) SCREEN#9 ) + (byte) numpoints#25 ← phi( main::@4/(byte) numpoints#26 ) + (byte*) COLORS#9 ← phi( main::@4/(byte*) COLORS#10 ) + (byte) FILL#6 ← phi( main::@4/(byte) FILL#7 ) + (byte*) SCREEN#5 ← phi( main::@4/(byte*) SCREEN#6 ) (byte[256]) COLS#6 ← phi( main::@4/(byte[256]) COLS#5 ) (byte[256]) YPOS#16 ← phi( main::@4/(byte[256]) YPOS#15 ) (byte[256]) XPOS#16 ← phi( main::@4/(byte[256]) XPOS#15 ) @@ -1775,10 +1833,10 @@ main::@5: from main::@4 call addpoint param-assignment to:main::@6 main::@6: from main::@5 - (byte) numpoints#23 ← phi( main::@5/(byte) numpoints#24 ) - (byte) FILL#11 ← phi( main::@5/(byte) FILL#12 ) - (byte*) COLORS#7 ← phi( main::@5/(byte*) COLORS#8 ) - (byte*) SCREEN#7 ← phi( main::@5/(byte*) SCREEN#8 ) + (byte) numpoints#24 ← phi( main::@5/(byte) numpoints#25 ) + (byte*) COLORS#8 ← phi( main::@5/(byte*) COLORS#9 ) + (byte) FILL#5 ← phi( main::@5/(byte) FILL#6 ) + (byte*) SCREEN#4 ← phi( main::@5/(byte*) SCREEN#5 ) (byte[256]) COLS#7 ← phi( main::@5/(byte[256]) COLS#6 ) (byte[256]) YPOS#17 ← phi( main::@5/(byte[256]) YPOS#16 ) (byte[256]) XPOS#17 ← phi( main::@5/(byte[256]) XPOS#16 ) @@ -1789,10 +1847,10 @@ main::@6: from main::@5 call addpoint param-assignment to:main::@7 main::@7: from main::@6 - (byte) numpoints#21 ← phi( main::@6/(byte) numpoints#23 ) - (byte) FILL#9 ← phi( main::@6/(byte) FILL#11 ) - (byte*) COLORS#5 ← phi( main::@6/(byte*) COLORS#7 ) - (byte*) SCREEN#5 ← phi( main::@6/(byte*) SCREEN#7 ) + (byte) numpoints#23 ← phi( main::@6/(byte) numpoints#24 ) + (byte*) COLORS#7 ← phi( main::@6/(byte*) COLORS#8 ) + (byte) FILL#4 ← phi( main::@6/(byte) FILL#5 ) + (byte*) SCREEN#3 ← phi( main::@6/(byte*) SCREEN#4 ) (byte[256]) COLS#8 ← phi( main::@6/(byte[256]) COLS#7 ) (byte[256]) YPOS#18 ← phi( main::@6/(byte[256]) YPOS#17 ) (byte[256]) XPOS#18 ← phi( main::@6/(byte[256]) XPOS#17 ) @@ -1803,50 +1861,52 @@ main::@7: from main::@6 call addpoint param-assignment to:main::@8 main::@8: from main::@7 - (byte) numpoints#20 ← phi( main::@7/(byte) numpoints#21 ) - (byte[256]) COLS#27 ← phi( main::@7/(byte[256]) COLS#8 ) - (byte) FILL#8 ← phi( main::@7/(byte) FILL#9 ) - (byte[256]) YPOS#31 ← phi( main::@7/(byte[256]) YPOS#18 ) - (byte[256]) XPOS#28 ← phi( main::@7/(byte[256]) XPOS#18 ) - (byte*) COLORS#4 ← phi( main::@7/(byte*) COLORS#5 ) - (byte*) SCREEN#4 ← phi( main::@7/(byte*) SCREEN#5 ) - to:main::@1 -main::@1: from main::@10 main::@8 - (byte) numpoints#18 ← phi( main::@10/(byte) numpoints#19 main::@8/(byte) numpoints#20 ) - (byte[256]) COLS#25 ← phi( main::@10/(byte[256]) COLS#26 main::@8/(byte[256]) COLS#27 ) - (byte) FILL#6 ← phi( main::@10/(byte) FILL#7 main::@8/(byte) FILL#8 ) - (byte[256]) YPOS#25 ← phi( main::@10/(byte[256]) YPOS#30 main::@8/(byte[256]) YPOS#31 ) - (byte[256]) XPOS#21 ← phi( main::@10/(byte[256]) XPOS#27 main::@8/(byte[256]) XPOS#28 ) - (byte*) COLORS#2 ← phi( main::@10/(byte*) COLORS#3 main::@8/(byte*) COLORS#4 ) - (byte*) SCREEN#2 ← phi( main::@10/(byte*) SCREEN#3 main::@8/(byte*) SCREEN#4 ) - call render param-assignment + (byte) numpoints#21 ← phi( main::@7/(byte) numpoints#23 ) + (byte[256]) COLS#28 ← phi( main::@7/(byte[256]) COLS#8 ) + (byte[256]) YPOS#35 ← phi( main::@7/(byte[256]) YPOS#18 ) + (byte[256]) XPOS#33 ← phi( main::@7/(byte[256]) XPOS#18 ) + (byte*) COLORS#5 ← phi( main::@7/(byte*) COLORS#7 ) + (byte) FILL#3 ← phi( main::@7/(byte) FILL#4 ) + (byte*) SCREEN#2 ← phi( main::@7/(byte*) SCREEN#3 ) + call initscreen param-assignment to:main::@9 -main::@9: from main::@1 +main::@9: from main::@8 + (byte) numpoints#20 ← phi( main::@8/(byte) numpoints#21 ) + (byte[256]) COLS#27 ← phi( main::@8/(byte[256]) COLS#28 ) + (byte[256]) YPOS#31 ← phi( main::@8/(byte[256]) YPOS#35 ) + (byte[256]) XPOS#28 ← phi( main::@8/(byte[256]) XPOS#33 ) + (byte*) COLORS#4 ← phi( main::@8/(byte*) COLORS#5 ) + to:main::@1 +main::@1: from main::@11 main::@9 + (byte) numpoints#18 ← phi( main::@11/(byte) numpoints#19 main::@9/(byte) numpoints#20 ) + (byte[256]) COLS#25 ← phi( main::@11/(byte[256]) COLS#26 main::@9/(byte[256]) COLS#27 ) + (byte[256]) YPOS#25 ← phi( main::@11/(byte[256]) YPOS#30 main::@9/(byte[256]) YPOS#31 ) + (byte[256]) XPOS#21 ← phi( main::@11/(byte[256]) XPOS#27 main::@9/(byte[256]) XPOS#28 ) + (byte*) COLORS#2 ← phi( main::@11/(byte*) COLORS#3 main::@9/(byte*) COLORS#4 ) + call render param-assignment + to:main::@10 +main::@10: from main::@1 (byte) numpoints#22 ← phi( main::@1/(byte) numpoints#18 ) - (byte[256]) COLS#28 ← phi( main::@1/(byte[256]) COLS#25 ) - (byte) FILL#10 ← phi( main::@1/(byte) FILL#6 ) + (byte[256]) COLS#29 ← phi( main::@1/(byte[256]) COLS#25 ) (byte*) COLORS#6 ← phi( main::@1/(byte*) COLORS#2 ) - (byte*) SCREEN#6 ← phi( main::@1/(byte*) SCREEN#2 ) (byte[256]) YPOS#21 ← phi( main::@1/(byte[256]) YPOS#25 ) (byte[256]) XPOS#9 ← phi( main::@1/(byte[256]) XPOS#21 ) call animate param-assignment - to:main::@10 -main::@10: from main::@9 - (byte) numpoints#19 ← phi( main::@9/(byte) numpoints#22 ) - (byte[256]) COLS#26 ← phi( main::@9/(byte[256]) COLS#28 ) - (byte) FILL#7 ← phi( main::@9/(byte) FILL#10 ) - (byte[256]) YPOS#30 ← phi( main::@9/(byte[256]) YPOS#21 ) - (byte[256]) XPOS#27 ← phi( main::@9/(byte[256]) XPOS#9 ) - (byte*) COLORS#3 ← phi( main::@9/(byte*) COLORS#6 ) - (byte*) SCREEN#3 ← phi( main::@9/(byte*) SCREEN#6 ) + to:main::@11 +main::@11: from main::@10 + (byte) numpoints#19 ← phi( main::@10/(byte) numpoints#22 ) + (byte[256]) COLS#26 ← phi( main::@10/(byte[256]) COLS#29 ) + (byte[256]) YPOS#30 ← phi( main::@10/(byte[256]) YPOS#21 ) + (byte[256]) XPOS#27 ← phi( main::@10/(byte[256]) XPOS#9 ) + (byte*) COLORS#3 ← phi( main::@10/(byte*) COLORS#6 ) if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 - (byte[256]) YPOS#9 ← phi( main::@9/(byte[256]) YPOS#21 ) - (byte[256]) XPOS#1 ← phi( main::@9/(byte[256]) XPOS#9 ) +animate: from main::@10 + (byte[256]) YPOS#9 ← phi( main::@10/(byte[256]) YPOS#21 ) + (byte[256]) XPOS#1 ← phi( main::@10/(byte[256]) XPOS#9 ) (byte~) animate::$0 ← (byte[256]) XPOS#1 *idx (byte) 0 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((byte[256]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 @@ -1949,15 +2009,28 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + (byte) FILL#2 ← phi( main::@8/(byte) FILL#3 ) + (byte*) SCREEN#1 ← phi( main::@8/(byte*) SCREEN#2 ) + (byte*) initscreen::screen#0 ← (byte*) SCREEN#1 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(byte*) initscreen::screen#0 initscreen::@1/(byte*) initscreen::screen#1 ) + (byte) FILL#1 ← phi( initscreen/(byte) FILL#2 initscreen::@1/(byte) FILL#1 ) + *((byte*) initscreen::screen#2) ← (byte) FILL#1 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + (boolean~) initscreen::$0 ← (byte*) initscreen::screen#1 < (word) 2048 + if((boolean~) initscreen::$0) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 (byte) numpoints#16 ← phi( main::@1/(byte) numpoints#18 ) (byte[256]) COLS#23 ← phi( main::@1/(byte[256]) COLS#25 ) (byte[256]) YPOS#32 ← phi( main::@1/(byte[256]) YPOS#25 ) - (byte[256]) XPOS#33 ← phi( main::@1/(byte[256]) XPOS#21 ) - (byte) FILL#4 ← phi( main::@1/(byte) FILL#6 ) + (byte[256]) XPOS#34 ← phi( main::@1/(byte[256]) XPOS#21 ) (byte*) COLORS#1 ← phi( main::@1/(byte*) COLORS#2 ) - (byte*) SCREEN#1 ← phi( main::@1/(byte*) SCREEN#2 ) - (byte*) render::chrline#0 ← (byte*) SCREEN#1 (byte*) render::colline#0 ← (byte*) COLORS#1 (byte) render::y#0 ← (byte) 0 to:render::@1 @@ -1965,9 +2038,7 @@ render::@1: from render render::@3 (byte) numpoints#14 ← phi( render/(byte) numpoints#16 render::@3/(byte) numpoints#17 ) (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#24 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#32 render::@3/(byte[256]) YPOS#33 ) - (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#33 render::@3/(byte[256]) XPOS#34 ) - (byte*) render::chrline#5 ← phi( render/(byte*) render::chrline#0 render::@3/(byte*) render::chrline#1 ) - (byte) FILL#3 ← phi( render/(byte) FILL#4 render::@3/(byte) FILL#5 ) + (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#34 render::@3/(byte[256]) XPOS#35 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) render::y#0 render::@3/(byte) render::y#1 ) (byte) render::x#0 ← (byte) 0 @@ -1977,8 +2048,6 @@ render::@2: from render::@1 render::@5 (byte[256]) COLS#20 ← phi( render::@1/(byte[256]) COLS#21 render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#22 ← phi( render::@1/(byte[256]) YPOS#26 render::@5/(byte[256]) YPOS#27 ) (byte[256]) XPOS#24 ← phi( render::@1/(byte[256]) XPOS#29 render::@5/(byte[256]) XPOS#30 ) - (byte*) render::chrline#4 ← phi( render::@1/(byte*) render::chrline#5 render::@5/(byte*) render::chrline#2 ) - (byte) FILL#2 ← phi( render::@1/(byte) FILL#3 render::@5/(byte) FILL#1 ) (byte*) render::colline#4 ← phi( render::@1/(byte*) render::colline#5 render::@5/(byte*) render::colline#2 ) (byte) render::y#2 ← phi( render::@1/(byte) render::y#4 render::@5/(byte) render::y#5 ) (byte) render::x#2 ← phi( render::@1/(byte) render::x#0 render::@5/(byte) render::x#1 ) @@ -1993,15 +2062,12 @@ render::@5: from render::@2 (byte[256]) YPOS#27 ← phi( render::@2/(byte[256]) YPOS#22 ) (byte[256]) XPOS#30 ← phi( render::@2/(byte[256]) XPOS#24 ) (byte) render::y#5 ← phi( render::@2/(byte) render::y#2 ) - (byte*) render::chrline#2 ← phi( render::@2/(byte*) render::chrline#4 ) - (byte) FILL#1 ← phi( render::@2/(byte) FILL#2 ) (byte) render::x#3 ← phi( render::@2/(byte) render::x#2 ) (byte*) render::colline#2 ← phi( render::@2/(byte*) render::colline#4 ) (byte) findcol::return#4 ← phi( render::@2/(byte) findcol::return#0 ) (byte~) render::$0 ← (byte) findcol::return#4 (byte) render::col#0 ← (byte~) render::$0 *((byte*) render::colline#2 + (byte) render::x#3) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#3) ← (byte) FILL#1 (byte) render::x#1 ← ++ (byte) render::x#3 (boolean~) render::$1 ← (byte) render::x#1 < (byte) 40 if((boolean~) render::$1) goto render::@2 @@ -2010,18 +2076,14 @@ render::@3: from render::@5 (byte) numpoints#17 ← phi( render::@5/(byte) numpoints#15 ) (byte[256]) COLS#24 ← phi( render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#33 ← phi( render::@5/(byte[256]) YPOS#27 ) - (byte[256]) XPOS#34 ← phi( render::@5/(byte[256]) XPOS#30 ) - (byte) FILL#5 ← phi( render::@5/(byte) FILL#1 ) + (byte[256]) XPOS#35 ← phi( render::@5/(byte[256]) XPOS#30 ) (byte) render::y#3 ← phi( render::@5/(byte) render::y#5 ) (byte*) render::colline#3 ← phi( render::@5/(byte*) render::colline#2 ) - (byte*) render::chrline#3 ← phi( render::@5/(byte*) render::chrline#2 ) - (byte*~) render::$2 ← (byte*) render::chrline#3 + (byte) 40 - (byte*) render::chrline#1 ← (byte*~) render::$2 - (byte*~) render::$3 ← (byte*) render::colline#3 + (byte) 40 - (byte*) render::colline#1 ← (byte*~) render::$3 + (byte*~) render::$2 ← (byte*) render::colline#3 + (byte) 40 + (byte*) render::colline#1 ← (byte*~) render::$2 (byte) render::y#1 ← ++ (byte) render::y#3 - (boolean~) render::$4 ← (byte) render::y#1 < (byte) 25 - if((boolean~) render::$4) goto render::@1 + (boolean~) render::$3 ← (byte) render::y#1 < (byte) 25 + if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: from render::@3 return @@ -2056,8 +2118,8 @@ findcol::@1: from findcol findcol::@13 to:findcol::@3 findcol::@2: from findcol::@1 (byte) findcol::mincol#12 ← phi( findcol::@1/(byte) findcol::mincol#11 ) - (byte[256]) YPOS#38 ← phi( findcol::@1/(byte[256]) YPOS#8 ) - (byte[256]) XPOS#39 ← phi( findcol::@1/(byte[256]) XPOS#8 ) + (byte[256]) YPOS#39 ← phi( findcol::@1/(byte[256]) YPOS#8 ) + (byte[256]) XPOS#40 ← phi( findcol::@1/(byte[256]) XPOS#8 ) (byte) numpoints#11 ← phi( findcol::@1/(byte) numpoints#10 ) (byte) findcol::i#12 ← phi( findcol::@1/(byte) findcol::i#2 ) (byte[256]) COLS#17 ← phi( findcol::@1/(byte[256]) COLS#16 ) @@ -2071,8 +2133,8 @@ findcol::@2: from findcol::@1 to:findcol::@3 findcol::@3: from findcol::@1 findcol::@2 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@2/(byte) findcol::mincol#12 ) - (byte[256]) YPOS#37 ← phi( findcol::@1/(byte[256]) YPOS#8 findcol::@2/(byte[256]) YPOS#38 ) - (byte[256]) XPOS#38 ← phi( findcol::@1/(byte[256]) XPOS#8 findcol::@2/(byte[256]) XPOS#39 ) + (byte[256]) YPOS#38 ← phi( findcol::@1/(byte[256]) YPOS#8 findcol::@2/(byte[256]) YPOS#39 ) + (byte[256]) XPOS#39 ← phi( findcol::@1/(byte[256]) XPOS#8 findcol::@2/(byte[256]) XPOS#40 ) (byte) numpoints#9 ← phi( findcol::@1/(byte) numpoints#10 findcol::@2/(byte) numpoints#11 ) (byte) findcol::i#11 ← phi( findcol::@1/(byte) findcol::i#2 findcol::@2/(byte) findcol::i#12 ) (byte[256]) COLS#15 ← phi( findcol::@1/(byte[256]) COLS#16 findcol::@2/(byte[256]) COLS#17 ) @@ -2094,8 +2156,8 @@ findcol::@return: from findcol::@27 findcol::@4 to:@RETURN findcol::@6: from findcol::@3 (byte) findcol::mincol#8 ← phi( findcol::@3/(byte) findcol::mincol#10 ) - (byte[256]) YPOS#35 ← phi( findcol::@3/(byte[256]) YPOS#37 ) - (byte[256]) XPOS#36 ← phi( findcol::@3/(byte[256]) XPOS#38 ) + (byte[256]) YPOS#36 ← phi( findcol::@3/(byte[256]) YPOS#38 ) + (byte[256]) XPOS#37 ← phi( findcol::@3/(byte[256]) XPOS#39 ) (byte) numpoints#7 ← phi( findcol::@3/(byte) numpoints#9 ) (byte) findcol::i#9 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#13 ← phi( findcol::@3/(byte[256]) COLS#15 ) @@ -2109,8 +2171,8 @@ findcol::@6: from findcol::@3 to:findcol::@8 findcol::@7: from findcol::@3 (byte) findcol::mincol#9 ← phi( findcol::@3/(byte) findcol::mincol#10 ) - (byte[256]) YPOS#36 ← phi( findcol::@3/(byte[256]) YPOS#37 ) - (byte[256]) XPOS#37 ← phi( findcol::@3/(byte[256]) XPOS#38 ) + (byte[256]) YPOS#37 ← phi( findcol::@3/(byte[256]) YPOS#38 ) + (byte[256]) XPOS#38 ← phi( findcol::@3/(byte[256]) XPOS#39 ) (byte) numpoints#8 ← phi( findcol::@3/(byte) numpoints#9 ) (byte) findcol::i#10 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#14 ← phi( findcol::@3/(byte[256]) COLS#15 ) @@ -2125,8 +2187,8 @@ findcol::@7: from findcol::@3 findcol::@8: from findcol::@6 findcol::@7 (byte) findcol::mincol#7 ← phi( findcol::@6/(byte) findcol::mincol#8 findcol::@7/(byte) findcol::mincol#9 ) (byte) findcol::x#12 ← phi( findcol::@6/(byte) findcol::x#3 findcol::@7/(byte) findcol::x#4 ) - (byte[256]) YPOS#34 ← phi( findcol::@6/(byte[256]) YPOS#35 findcol::@7/(byte[256]) YPOS#36 ) - (byte[256]) XPOS#35 ← phi( findcol::@6/(byte[256]) XPOS#36 findcol::@7/(byte[256]) XPOS#37 ) + (byte[256]) YPOS#34 ← phi( findcol::@6/(byte[256]) YPOS#36 findcol::@7/(byte[256]) YPOS#37 ) + (byte[256]) XPOS#36 ← phi( findcol::@6/(byte[256]) XPOS#37 findcol::@7/(byte[256]) XPOS#38 ) (byte) numpoints#6 ← phi( findcol::@6/(byte) numpoints#7 findcol::@7/(byte) numpoints#8 ) (byte) findcol::i#8 ← phi( findcol::@6/(byte) findcol::i#9 findcol::@7/(byte) findcol::i#10 ) (byte[256]) COLS#12 ← phi( findcol::@6/(byte[256]) COLS#13 findcol::@7/(byte[256]) COLS#14 ) @@ -2141,7 +2203,7 @@ findcol::@9: from findcol::@8 (byte) findcol::mincol#6 ← phi( findcol::@8/(byte) findcol::mincol#7 ) (byte) findcol::x#11 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#29 ← phi( findcol::@8/(byte[256]) YPOS#34 ) - (byte[256]) XPOS#32 ← phi( findcol::@8/(byte[256]) XPOS#35 ) + (byte[256]) XPOS#32 ← phi( findcol::@8/(byte[256]) XPOS#36 ) (byte) numpoints#5 ← phi( findcol::@8/(byte) numpoints#6 ) (byte) findcol::i#7 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#11 ← phi( findcol::@8/(byte[256]) COLS#12 ) @@ -2157,7 +2219,7 @@ findcol::@10: from findcol::@8 (byte) findcol::mincol#5 ← phi( findcol::@8/(byte) findcol::mincol#7 ) (byte) findcol::x#10 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#28 ← phi( findcol::@8/(byte[256]) YPOS#34 ) - (byte[256]) XPOS#31 ← phi( findcol::@8/(byte[256]) XPOS#35 ) + (byte[256]) XPOS#31 ← phi( findcol::@8/(byte[256]) XPOS#36 ) (byte) numpoints#4 ← phi( findcol::@8/(byte) numpoints#6 ) (byte) findcol::i#6 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#10 ← phi( findcol::@8/(byte[256]) COLS#12 ) @@ -2214,9 +2276,9 @@ findcol::@27: from findcol::@13 (byte) findcol::mincol#2 ← phi( findcol::@13/(byte) findcol::mincol#3 ) (byte) findcol::return#3 ← (byte) findcol::mincol#2 to:findcol::@return -@END: from @6 +@END: from @7 -Culled Empty Block (label) @6 +Culled Empty Block (label) @7 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @BEGIN: from @@ -2230,10 +2292,10 @@ CONTROL FLOW GRAPH call main param-assignment to:@END main: from @BEGIN - (byte) numpoints#27 ← phi( @BEGIN/(byte) numpoints#0 ) - (byte) FILL#15 ← phi( @BEGIN/(byte) FILL#0 ) - (byte*) COLORS#11 ← phi( @BEGIN/(byte*) COLORS#0 ) - (byte*) SCREEN#11 ← phi( @BEGIN/(byte*) SCREEN#0 ) + (byte) numpoints#28 ← phi( @BEGIN/(byte) numpoints#0 ) + (byte*) COLORS#12 ← phi( @BEGIN/(byte*) COLORS#0 ) + (byte) FILL#9 ← phi( @BEGIN/(byte) FILL#0 ) + (byte*) SCREEN#8 ← phi( @BEGIN/(byte*) SCREEN#0 ) (byte[256]) COLS#3 ← phi( @BEGIN/(byte[256]) COLS#0 ) (byte[256]) YPOS#13 ← phi( @BEGIN/(byte[256]) YPOS#0 ) (byte[256]) XPOS#13 ← phi( @BEGIN/(byte[256]) XPOS#0 ) @@ -2244,10 +2306,10 @@ main: from @BEGIN call addpoint param-assignment to:main::@3 main::@3: from main - (byte) numpoints#26 ← phi( main/(byte) numpoints#27 ) - (byte) FILL#14 ← phi( main/(byte) FILL#15 ) - (byte*) COLORS#10 ← phi( main/(byte*) COLORS#11 ) - (byte*) SCREEN#10 ← phi( main/(byte*) SCREEN#11 ) + (byte) numpoints#27 ← phi( main/(byte) numpoints#28 ) + (byte*) COLORS#11 ← phi( main/(byte*) COLORS#12 ) + (byte) FILL#8 ← phi( main/(byte) FILL#9 ) + (byte*) SCREEN#7 ← phi( main/(byte*) SCREEN#8 ) (byte[256]) COLS#4 ← phi( main/(byte[256]) COLS#3 ) (byte[256]) YPOS#14 ← phi( main/(byte[256]) YPOS#13 ) (byte[256]) XPOS#14 ← phi( main/(byte[256]) XPOS#13 ) @@ -2258,10 +2320,10 @@ main::@3: from main call addpoint param-assignment to:main::@4 main::@4: from main::@3 - (byte) numpoints#25 ← phi( main::@3/(byte) numpoints#26 ) - (byte) FILL#13 ← phi( main::@3/(byte) FILL#14 ) - (byte*) COLORS#9 ← phi( main::@3/(byte*) COLORS#10 ) - (byte*) SCREEN#9 ← phi( main::@3/(byte*) SCREEN#10 ) + (byte) numpoints#26 ← phi( main::@3/(byte) numpoints#27 ) + (byte*) COLORS#10 ← phi( main::@3/(byte*) COLORS#11 ) + (byte) FILL#7 ← phi( main::@3/(byte) FILL#8 ) + (byte*) SCREEN#6 ← phi( main::@3/(byte*) SCREEN#7 ) (byte[256]) COLS#5 ← phi( main::@3/(byte[256]) COLS#4 ) (byte[256]) YPOS#15 ← phi( main::@3/(byte[256]) YPOS#14 ) (byte[256]) XPOS#15 ← phi( main::@3/(byte[256]) XPOS#14 ) @@ -2272,10 +2334,10 @@ main::@4: from main::@3 call addpoint param-assignment to:main::@5 main::@5: from main::@4 - (byte) numpoints#24 ← phi( main::@4/(byte) numpoints#25 ) - (byte) FILL#12 ← phi( main::@4/(byte) FILL#13 ) - (byte*) COLORS#8 ← phi( main::@4/(byte*) COLORS#9 ) - (byte*) SCREEN#8 ← phi( main::@4/(byte*) SCREEN#9 ) + (byte) numpoints#25 ← phi( main::@4/(byte) numpoints#26 ) + (byte*) COLORS#9 ← phi( main::@4/(byte*) COLORS#10 ) + (byte) FILL#6 ← phi( main::@4/(byte) FILL#7 ) + (byte*) SCREEN#5 ← phi( main::@4/(byte*) SCREEN#6 ) (byte[256]) COLS#6 ← phi( main::@4/(byte[256]) COLS#5 ) (byte[256]) YPOS#16 ← phi( main::@4/(byte[256]) YPOS#15 ) (byte[256]) XPOS#16 ← phi( main::@4/(byte[256]) XPOS#15 ) @@ -2286,10 +2348,10 @@ main::@5: from main::@4 call addpoint param-assignment to:main::@6 main::@6: from main::@5 - (byte) numpoints#23 ← phi( main::@5/(byte) numpoints#24 ) - (byte) FILL#11 ← phi( main::@5/(byte) FILL#12 ) - (byte*) COLORS#7 ← phi( main::@5/(byte*) COLORS#8 ) - (byte*) SCREEN#7 ← phi( main::@5/(byte*) SCREEN#8 ) + (byte) numpoints#24 ← phi( main::@5/(byte) numpoints#25 ) + (byte*) COLORS#8 ← phi( main::@5/(byte*) COLORS#9 ) + (byte) FILL#5 ← phi( main::@5/(byte) FILL#6 ) + (byte*) SCREEN#4 ← phi( main::@5/(byte*) SCREEN#5 ) (byte[256]) COLS#7 ← phi( main::@5/(byte[256]) COLS#6 ) (byte[256]) YPOS#17 ← phi( main::@5/(byte[256]) YPOS#16 ) (byte[256]) XPOS#17 ← phi( main::@5/(byte[256]) XPOS#16 ) @@ -2300,10 +2362,10 @@ main::@6: from main::@5 call addpoint param-assignment to:main::@7 main::@7: from main::@6 - (byte) numpoints#21 ← phi( main::@6/(byte) numpoints#23 ) - (byte) FILL#9 ← phi( main::@6/(byte) FILL#11 ) - (byte*) COLORS#5 ← phi( main::@6/(byte*) COLORS#7 ) - (byte*) SCREEN#5 ← phi( main::@6/(byte*) SCREEN#7 ) + (byte) numpoints#23 ← phi( main::@6/(byte) numpoints#24 ) + (byte*) COLORS#7 ← phi( main::@6/(byte*) COLORS#8 ) + (byte) FILL#4 ← phi( main::@6/(byte) FILL#5 ) + (byte*) SCREEN#3 ← phi( main::@6/(byte*) SCREEN#4 ) (byte[256]) COLS#8 ← phi( main::@6/(byte[256]) COLS#7 ) (byte[256]) YPOS#18 ← phi( main::@6/(byte[256]) YPOS#17 ) (byte[256]) XPOS#18 ← phi( main::@6/(byte[256]) XPOS#17 ) @@ -2314,50 +2376,52 @@ main::@7: from main::@6 call addpoint param-assignment to:main::@8 main::@8: from main::@7 - (byte) numpoints#20 ← phi( main::@7/(byte) numpoints#21 ) - (byte[256]) COLS#27 ← phi( main::@7/(byte[256]) COLS#8 ) - (byte) FILL#8 ← phi( main::@7/(byte) FILL#9 ) - (byte[256]) YPOS#31 ← phi( main::@7/(byte[256]) YPOS#18 ) - (byte[256]) XPOS#28 ← phi( main::@7/(byte[256]) XPOS#18 ) - (byte*) COLORS#4 ← phi( main::@7/(byte*) COLORS#5 ) - (byte*) SCREEN#4 ← phi( main::@7/(byte*) SCREEN#5 ) - to:main::@1 -main::@1: from main::@10 main::@8 - (byte) numpoints#18 ← phi( main::@10/(byte) numpoints#19 main::@8/(byte) numpoints#20 ) - (byte[256]) COLS#25 ← phi( main::@10/(byte[256]) COLS#26 main::@8/(byte[256]) COLS#27 ) - (byte) FILL#6 ← phi( main::@10/(byte) FILL#7 main::@8/(byte) FILL#8 ) - (byte[256]) YPOS#25 ← phi( main::@10/(byte[256]) YPOS#30 main::@8/(byte[256]) YPOS#31 ) - (byte[256]) XPOS#21 ← phi( main::@10/(byte[256]) XPOS#27 main::@8/(byte[256]) XPOS#28 ) - (byte*) COLORS#2 ← phi( main::@10/(byte*) COLORS#3 main::@8/(byte*) COLORS#4 ) - (byte*) SCREEN#2 ← phi( main::@10/(byte*) SCREEN#3 main::@8/(byte*) SCREEN#4 ) - call render param-assignment + (byte) numpoints#21 ← phi( main::@7/(byte) numpoints#23 ) + (byte[256]) COLS#28 ← phi( main::@7/(byte[256]) COLS#8 ) + (byte[256]) YPOS#35 ← phi( main::@7/(byte[256]) YPOS#18 ) + (byte[256]) XPOS#33 ← phi( main::@7/(byte[256]) XPOS#18 ) + (byte*) COLORS#5 ← phi( main::@7/(byte*) COLORS#7 ) + (byte) FILL#3 ← phi( main::@7/(byte) FILL#4 ) + (byte*) SCREEN#2 ← phi( main::@7/(byte*) SCREEN#3 ) + call initscreen param-assignment to:main::@9 -main::@9: from main::@1 +main::@9: from main::@8 + (byte) numpoints#20 ← phi( main::@8/(byte) numpoints#21 ) + (byte[256]) COLS#27 ← phi( main::@8/(byte[256]) COLS#28 ) + (byte[256]) YPOS#31 ← phi( main::@8/(byte[256]) YPOS#35 ) + (byte[256]) XPOS#28 ← phi( main::@8/(byte[256]) XPOS#33 ) + (byte*) COLORS#4 ← phi( main::@8/(byte*) COLORS#5 ) + to:main::@1 +main::@1: from main::@11 main::@9 + (byte) numpoints#18 ← phi( main::@11/(byte) numpoints#19 main::@9/(byte) numpoints#20 ) + (byte[256]) COLS#25 ← phi( main::@11/(byte[256]) COLS#26 main::@9/(byte[256]) COLS#27 ) + (byte[256]) YPOS#25 ← phi( main::@11/(byte[256]) YPOS#30 main::@9/(byte[256]) YPOS#31 ) + (byte[256]) XPOS#21 ← phi( main::@11/(byte[256]) XPOS#27 main::@9/(byte[256]) XPOS#28 ) + (byte*) COLORS#2 ← phi( main::@11/(byte*) COLORS#3 main::@9/(byte*) COLORS#4 ) + call render param-assignment + to:main::@10 +main::@10: from main::@1 (byte) numpoints#22 ← phi( main::@1/(byte) numpoints#18 ) - (byte[256]) COLS#28 ← phi( main::@1/(byte[256]) COLS#25 ) - (byte) FILL#10 ← phi( main::@1/(byte) FILL#6 ) + (byte[256]) COLS#29 ← phi( main::@1/(byte[256]) COLS#25 ) (byte*) COLORS#6 ← phi( main::@1/(byte*) COLORS#2 ) - (byte*) SCREEN#6 ← phi( main::@1/(byte*) SCREEN#2 ) (byte[256]) YPOS#21 ← phi( main::@1/(byte[256]) YPOS#25 ) (byte[256]) XPOS#9 ← phi( main::@1/(byte[256]) XPOS#21 ) call animate param-assignment - to:main::@10 -main::@10: from main::@9 - (byte) numpoints#19 ← phi( main::@9/(byte) numpoints#22 ) - (byte[256]) COLS#26 ← phi( main::@9/(byte[256]) COLS#28 ) - (byte) FILL#7 ← phi( main::@9/(byte) FILL#10 ) - (byte[256]) YPOS#30 ← phi( main::@9/(byte[256]) YPOS#21 ) - (byte[256]) XPOS#27 ← phi( main::@9/(byte[256]) XPOS#9 ) - (byte*) COLORS#3 ← phi( main::@9/(byte*) COLORS#6 ) - (byte*) SCREEN#3 ← phi( main::@9/(byte*) SCREEN#6 ) + to:main::@11 +main::@11: from main::@10 + (byte) numpoints#19 ← phi( main::@10/(byte) numpoints#22 ) + (byte[256]) COLS#26 ← phi( main::@10/(byte[256]) COLS#29 ) + (byte[256]) YPOS#30 ← phi( main::@10/(byte[256]) YPOS#21 ) + (byte[256]) XPOS#27 ← phi( main::@10/(byte[256]) XPOS#9 ) + (byte*) COLORS#3 ← phi( main::@10/(byte*) COLORS#6 ) if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 - (byte[256]) YPOS#9 ← phi( main::@9/(byte[256]) YPOS#21 ) - (byte[256]) XPOS#1 ← phi( main::@9/(byte[256]) XPOS#9 ) +animate: from main::@10 + (byte[256]) YPOS#9 ← phi( main::@10/(byte[256]) YPOS#21 ) + (byte[256]) XPOS#1 ← phi( main::@10/(byte[256]) XPOS#9 ) (byte~) animate::$0 ← (byte[256]) XPOS#1 *idx (byte) 0 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((byte[256]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 @@ -2460,15 +2524,28 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + (byte) FILL#2 ← phi( main::@8/(byte) FILL#3 ) + (byte*) SCREEN#1 ← phi( main::@8/(byte*) SCREEN#2 ) + (byte*) initscreen::screen#0 ← (byte*) SCREEN#1 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(byte*) initscreen::screen#0 initscreen::@1/(byte*) initscreen::screen#1 ) + (byte) FILL#1 ← phi( initscreen/(byte) FILL#2 initscreen::@1/(byte) FILL#1 ) + *((byte*) initscreen::screen#2) ← (byte) FILL#1 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + (boolean~) initscreen::$0 ← (byte*) initscreen::screen#1 < (word) 2048 + if((boolean~) initscreen::$0) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 (byte) numpoints#16 ← phi( main::@1/(byte) numpoints#18 ) (byte[256]) COLS#23 ← phi( main::@1/(byte[256]) COLS#25 ) (byte[256]) YPOS#32 ← phi( main::@1/(byte[256]) YPOS#25 ) - (byte[256]) XPOS#33 ← phi( main::@1/(byte[256]) XPOS#21 ) - (byte) FILL#4 ← phi( main::@1/(byte) FILL#6 ) + (byte[256]) XPOS#34 ← phi( main::@1/(byte[256]) XPOS#21 ) (byte*) COLORS#1 ← phi( main::@1/(byte*) COLORS#2 ) - (byte*) SCREEN#1 ← phi( main::@1/(byte*) SCREEN#2 ) - (byte*) render::chrline#0 ← (byte*) SCREEN#1 (byte*) render::colline#0 ← (byte*) COLORS#1 (byte) render::y#0 ← (byte) 0 to:render::@1 @@ -2476,9 +2553,7 @@ render::@1: from render render::@3 (byte) numpoints#14 ← phi( render/(byte) numpoints#16 render::@3/(byte) numpoints#17 ) (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#24 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#32 render::@3/(byte[256]) YPOS#33 ) - (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#33 render::@3/(byte[256]) XPOS#34 ) - (byte*) render::chrline#5 ← phi( render/(byte*) render::chrline#0 render::@3/(byte*) render::chrline#1 ) - (byte) FILL#3 ← phi( render/(byte) FILL#4 render::@3/(byte) FILL#5 ) + (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#34 render::@3/(byte[256]) XPOS#35 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) render::y#0 render::@3/(byte) render::y#1 ) (byte) render::x#0 ← (byte) 0 @@ -2488,8 +2563,6 @@ render::@2: from render::@1 render::@5 (byte[256]) COLS#20 ← phi( render::@1/(byte[256]) COLS#21 render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#22 ← phi( render::@1/(byte[256]) YPOS#26 render::@5/(byte[256]) YPOS#27 ) (byte[256]) XPOS#24 ← phi( render::@1/(byte[256]) XPOS#29 render::@5/(byte[256]) XPOS#30 ) - (byte*) render::chrline#4 ← phi( render::@1/(byte*) render::chrline#5 render::@5/(byte*) render::chrline#2 ) - (byte) FILL#2 ← phi( render::@1/(byte) FILL#3 render::@5/(byte) FILL#1 ) (byte*) render::colline#4 ← phi( render::@1/(byte*) render::colline#5 render::@5/(byte*) render::colline#2 ) (byte) render::y#2 ← phi( render::@1/(byte) render::y#4 render::@5/(byte) render::y#5 ) (byte) render::x#2 ← phi( render::@1/(byte) render::x#0 render::@5/(byte) render::x#1 ) @@ -2504,15 +2577,12 @@ render::@5: from render::@2 (byte[256]) YPOS#27 ← phi( render::@2/(byte[256]) YPOS#22 ) (byte[256]) XPOS#30 ← phi( render::@2/(byte[256]) XPOS#24 ) (byte) render::y#5 ← phi( render::@2/(byte) render::y#2 ) - (byte*) render::chrline#2 ← phi( render::@2/(byte*) render::chrline#4 ) - (byte) FILL#1 ← phi( render::@2/(byte) FILL#2 ) (byte) render::x#3 ← phi( render::@2/(byte) render::x#2 ) (byte*) render::colline#2 ← phi( render::@2/(byte*) render::colline#4 ) (byte) findcol::return#4 ← phi( render::@2/(byte) findcol::return#0 ) (byte~) render::$0 ← (byte) findcol::return#4 (byte) render::col#0 ← (byte~) render::$0 *((byte*) render::colline#2 + (byte) render::x#3) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#3) ← (byte) FILL#1 (byte) render::x#1 ← ++ (byte) render::x#3 (boolean~) render::$1 ← (byte) render::x#1 < (byte) 40 if((boolean~) render::$1) goto render::@2 @@ -2521,18 +2591,14 @@ render::@3: from render::@5 (byte) numpoints#17 ← phi( render::@5/(byte) numpoints#15 ) (byte[256]) COLS#24 ← phi( render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#33 ← phi( render::@5/(byte[256]) YPOS#27 ) - (byte[256]) XPOS#34 ← phi( render::@5/(byte[256]) XPOS#30 ) - (byte) FILL#5 ← phi( render::@5/(byte) FILL#1 ) + (byte[256]) XPOS#35 ← phi( render::@5/(byte[256]) XPOS#30 ) (byte) render::y#3 ← phi( render::@5/(byte) render::y#5 ) (byte*) render::colline#3 ← phi( render::@5/(byte*) render::colline#2 ) - (byte*) render::chrline#3 ← phi( render::@5/(byte*) render::chrline#2 ) - (byte*~) render::$2 ← (byte*) render::chrline#3 + (byte) 40 - (byte*) render::chrline#1 ← (byte*~) render::$2 - (byte*~) render::$3 ← (byte*) render::colline#3 + (byte) 40 - (byte*) render::colline#1 ← (byte*~) render::$3 + (byte*~) render::$2 ← (byte*) render::colline#3 + (byte) 40 + (byte*) render::colline#1 ← (byte*~) render::$2 (byte) render::y#1 ← ++ (byte) render::y#3 - (boolean~) render::$4 ← (byte) render::y#1 < (byte) 25 - if((boolean~) render::$4) goto render::@1 + (boolean~) render::$3 ← (byte) render::y#1 < (byte) 25 + if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: from render::@3 return @@ -2567,8 +2633,8 @@ findcol::@1: from findcol findcol::@13 to:findcol::@3 findcol::@2: from findcol::@1 (byte) findcol::mincol#12 ← phi( findcol::@1/(byte) findcol::mincol#11 ) - (byte[256]) YPOS#38 ← phi( findcol::@1/(byte[256]) YPOS#8 ) - (byte[256]) XPOS#39 ← phi( findcol::@1/(byte[256]) XPOS#8 ) + (byte[256]) YPOS#39 ← phi( findcol::@1/(byte[256]) YPOS#8 ) + (byte[256]) XPOS#40 ← phi( findcol::@1/(byte[256]) XPOS#8 ) (byte) numpoints#11 ← phi( findcol::@1/(byte) numpoints#10 ) (byte) findcol::i#12 ← phi( findcol::@1/(byte) findcol::i#2 ) (byte[256]) COLS#17 ← phi( findcol::@1/(byte[256]) COLS#16 ) @@ -2582,8 +2648,8 @@ findcol::@2: from findcol::@1 to:findcol::@3 findcol::@3: from findcol::@1 findcol::@2 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@2/(byte) findcol::mincol#12 ) - (byte[256]) YPOS#37 ← phi( findcol::@1/(byte[256]) YPOS#8 findcol::@2/(byte[256]) YPOS#38 ) - (byte[256]) XPOS#38 ← phi( findcol::@1/(byte[256]) XPOS#8 findcol::@2/(byte[256]) XPOS#39 ) + (byte[256]) YPOS#38 ← phi( findcol::@1/(byte[256]) YPOS#8 findcol::@2/(byte[256]) YPOS#39 ) + (byte[256]) XPOS#39 ← phi( findcol::@1/(byte[256]) XPOS#8 findcol::@2/(byte[256]) XPOS#40 ) (byte) numpoints#9 ← phi( findcol::@1/(byte) numpoints#10 findcol::@2/(byte) numpoints#11 ) (byte) findcol::i#11 ← phi( findcol::@1/(byte) findcol::i#2 findcol::@2/(byte) findcol::i#12 ) (byte[256]) COLS#15 ← phi( findcol::@1/(byte[256]) COLS#16 findcol::@2/(byte[256]) COLS#17 ) @@ -2605,8 +2671,8 @@ findcol::@return: from findcol::@27 findcol::@4 to:@RETURN findcol::@6: from findcol::@3 (byte) findcol::mincol#8 ← phi( findcol::@3/(byte) findcol::mincol#10 ) - (byte[256]) YPOS#35 ← phi( findcol::@3/(byte[256]) YPOS#37 ) - (byte[256]) XPOS#36 ← phi( findcol::@3/(byte[256]) XPOS#38 ) + (byte[256]) YPOS#36 ← phi( findcol::@3/(byte[256]) YPOS#38 ) + (byte[256]) XPOS#37 ← phi( findcol::@3/(byte[256]) XPOS#39 ) (byte) numpoints#7 ← phi( findcol::@3/(byte) numpoints#9 ) (byte) findcol::i#9 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#13 ← phi( findcol::@3/(byte[256]) COLS#15 ) @@ -2620,8 +2686,8 @@ findcol::@6: from findcol::@3 to:findcol::@8 findcol::@7: from findcol::@3 (byte) findcol::mincol#9 ← phi( findcol::@3/(byte) findcol::mincol#10 ) - (byte[256]) YPOS#36 ← phi( findcol::@3/(byte[256]) YPOS#37 ) - (byte[256]) XPOS#37 ← phi( findcol::@3/(byte[256]) XPOS#38 ) + (byte[256]) YPOS#37 ← phi( findcol::@3/(byte[256]) YPOS#38 ) + (byte[256]) XPOS#38 ← phi( findcol::@3/(byte[256]) XPOS#39 ) (byte) numpoints#8 ← phi( findcol::@3/(byte) numpoints#9 ) (byte) findcol::i#10 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#14 ← phi( findcol::@3/(byte[256]) COLS#15 ) @@ -2636,8 +2702,8 @@ findcol::@7: from findcol::@3 findcol::@8: from findcol::@6 findcol::@7 (byte) findcol::mincol#7 ← phi( findcol::@6/(byte) findcol::mincol#8 findcol::@7/(byte) findcol::mincol#9 ) (byte) findcol::x#12 ← phi( findcol::@6/(byte) findcol::x#3 findcol::@7/(byte) findcol::x#4 ) - (byte[256]) YPOS#34 ← phi( findcol::@6/(byte[256]) YPOS#35 findcol::@7/(byte[256]) YPOS#36 ) - (byte[256]) XPOS#35 ← phi( findcol::@6/(byte[256]) XPOS#36 findcol::@7/(byte[256]) XPOS#37 ) + (byte[256]) YPOS#34 ← phi( findcol::@6/(byte[256]) YPOS#36 findcol::@7/(byte[256]) YPOS#37 ) + (byte[256]) XPOS#36 ← phi( findcol::@6/(byte[256]) XPOS#37 findcol::@7/(byte[256]) XPOS#38 ) (byte) numpoints#6 ← phi( findcol::@6/(byte) numpoints#7 findcol::@7/(byte) numpoints#8 ) (byte) findcol::i#8 ← phi( findcol::@6/(byte) findcol::i#9 findcol::@7/(byte) findcol::i#10 ) (byte[256]) COLS#12 ← phi( findcol::@6/(byte[256]) COLS#13 findcol::@7/(byte[256]) COLS#14 ) @@ -2652,7 +2718,7 @@ findcol::@9: from findcol::@8 (byte) findcol::mincol#6 ← phi( findcol::@8/(byte) findcol::mincol#7 ) (byte) findcol::x#11 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#29 ← phi( findcol::@8/(byte[256]) YPOS#34 ) - (byte[256]) XPOS#32 ← phi( findcol::@8/(byte[256]) XPOS#35 ) + (byte[256]) XPOS#32 ← phi( findcol::@8/(byte[256]) XPOS#36 ) (byte) numpoints#5 ← phi( findcol::@8/(byte) numpoints#6 ) (byte) findcol::i#7 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#11 ← phi( findcol::@8/(byte[256]) COLS#12 ) @@ -2668,7 +2734,7 @@ findcol::@10: from findcol::@8 (byte) findcol::mincol#5 ← phi( findcol::@8/(byte) findcol::mincol#7 ) (byte) findcol::x#10 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#28 ← phi( findcol::@8/(byte[256]) YPOS#34 ) - (byte[256]) XPOS#31 ← phi( findcol::@8/(byte[256]) XPOS#35 ) + (byte[256]) XPOS#31 ← phi( findcol::@8/(byte[256]) XPOS#36 ) (byte) numpoints#4 ← phi( findcol::@8/(byte) numpoints#6 ) (byte) findcol::i#6 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#10 ← phi( findcol::@8/(byte[256]) COLS#12 ) @@ -2770,110 +2836,112 @@ CONTROL FLOW GRAPH call main param-assignment to:@END main: from @BEGIN - (byte) numpoints#27 ← phi( @BEGIN/(byte) 6 ) - (byte) FILL#15 ← phi( @BEGIN/(byte) 230 ) - (byte*) COLORS#11 ← phi( @BEGIN/(word) 55296 ) - (byte*) SCREEN#11 ← phi( @BEGIN/(word) 1024 ) + (byte) numpoints#28 ← phi( @BEGIN/(byte) 6 ) + (byte*) COLORS#12 ← phi( @BEGIN/(word) 55296 ) + (byte) FILL#9 ← phi( @BEGIN/(byte) 230 ) + (byte*) SCREEN#8 ← phi( @BEGIN/(word) 1024 ) (byte[256]) COLS#3 ← phi( @BEGIN/(word) 4608 ) (byte[256]) YPOS#13 ← phi( @BEGIN/(word) 4352 ) (byte[256]) XPOS#13 ← phi( @BEGIN/(word) 4096 ) call addpoint param-assignment to:main::@3 main::@3: from main - (byte) numpoints#26 ← phi( main/(byte) numpoints#27 ) - (byte) FILL#14 ← phi( main/(byte) FILL#15 ) - (byte*) COLORS#10 ← phi( main/(byte*) COLORS#11 ) - (byte*) SCREEN#10 ← phi( main/(byte*) SCREEN#11 ) + (byte) numpoints#27 ← phi( main/(byte) numpoints#28 ) + (byte*) COLORS#11 ← phi( main/(byte*) COLORS#12 ) + (byte) FILL#8 ← phi( main/(byte) FILL#9 ) + (byte*) SCREEN#7 ← phi( main/(byte*) SCREEN#8 ) (byte[256]) COLS#4 ← phi( main/(byte[256]) COLS#3 ) (byte[256]) YPOS#14 ← phi( main/(byte[256]) YPOS#13 ) (byte[256]) XPOS#14 ← phi( main/(byte[256]) XPOS#13 ) call addpoint param-assignment to:main::@4 main::@4: from main::@3 - (byte) numpoints#25 ← phi( main::@3/(byte) numpoints#26 ) - (byte) FILL#13 ← phi( main::@3/(byte) FILL#14 ) - (byte*) COLORS#9 ← phi( main::@3/(byte*) COLORS#10 ) - (byte*) SCREEN#9 ← phi( main::@3/(byte*) SCREEN#10 ) + (byte) numpoints#26 ← phi( main::@3/(byte) numpoints#27 ) + (byte*) COLORS#10 ← phi( main::@3/(byte*) COLORS#11 ) + (byte) FILL#7 ← phi( main::@3/(byte) FILL#8 ) + (byte*) SCREEN#6 ← phi( main::@3/(byte*) SCREEN#7 ) (byte[256]) COLS#5 ← phi( main::@3/(byte[256]) COLS#4 ) (byte[256]) YPOS#15 ← phi( main::@3/(byte[256]) YPOS#14 ) (byte[256]) XPOS#15 ← phi( main::@3/(byte[256]) XPOS#14 ) call addpoint param-assignment to:main::@5 main::@5: from main::@4 - (byte) numpoints#24 ← phi( main::@4/(byte) numpoints#25 ) - (byte) FILL#12 ← phi( main::@4/(byte) FILL#13 ) - (byte*) COLORS#8 ← phi( main::@4/(byte*) COLORS#9 ) - (byte*) SCREEN#8 ← phi( main::@4/(byte*) SCREEN#9 ) + (byte) numpoints#25 ← phi( main::@4/(byte) numpoints#26 ) + (byte*) COLORS#9 ← phi( main::@4/(byte*) COLORS#10 ) + (byte) FILL#6 ← phi( main::@4/(byte) FILL#7 ) + (byte*) SCREEN#5 ← phi( main::@4/(byte*) SCREEN#6 ) (byte[256]) COLS#6 ← phi( main::@4/(byte[256]) COLS#5 ) (byte[256]) YPOS#16 ← phi( main::@4/(byte[256]) YPOS#15 ) (byte[256]) XPOS#16 ← phi( main::@4/(byte[256]) XPOS#15 ) call addpoint param-assignment to:main::@6 main::@6: from main::@5 - (byte) numpoints#23 ← phi( main::@5/(byte) numpoints#24 ) - (byte) FILL#11 ← phi( main::@5/(byte) FILL#12 ) - (byte*) COLORS#7 ← phi( main::@5/(byte*) COLORS#8 ) - (byte*) SCREEN#7 ← phi( main::@5/(byte*) SCREEN#8 ) + (byte) numpoints#24 ← phi( main::@5/(byte) numpoints#25 ) + (byte*) COLORS#8 ← phi( main::@5/(byte*) COLORS#9 ) + (byte) FILL#5 ← phi( main::@5/(byte) FILL#6 ) + (byte*) SCREEN#4 ← phi( main::@5/(byte*) SCREEN#5 ) (byte[256]) COLS#7 ← phi( main::@5/(byte[256]) COLS#6 ) (byte[256]) YPOS#17 ← phi( main::@5/(byte[256]) YPOS#16 ) (byte[256]) XPOS#17 ← phi( main::@5/(byte[256]) XPOS#16 ) call addpoint param-assignment to:main::@7 main::@7: from main::@6 - (byte) numpoints#21 ← phi( main::@6/(byte) numpoints#23 ) - (byte) FILL#9 ← phi( main::@6/(byte) FILL#11 ) - (byte*) COLORS#5 ← phi( main::@6/(byte*) COLORS#7 ) - (byte*) SCREEN#5 ← phi( main::@6/(byte*) SCREEN#7 ) + (byte) numpoints#23 ← phi( main::@6/(byte) numpoints#24 ) + (byte*) COLORS#7 ← phi( main::@6/(byte*) COLORS#8 ) + (byte) FILL#4 ← phi( main::@6/(byte) FILL#5 ) + (byte*) SCREEN#3 ← phi( main::@6/(byte*) SCREEN#4 ) (byte[256]) COLS#8 ← phi( main::@6/(byte[256]) COLS#7 ) (byte[256]) YPOS#18 ← phi( main::@6/(byte[256]) YPOS#17 ) (byte[256]) XPOS#18 ← phi( main::@6/(byte[256]) XPOS#17 ) call addpoint param-assignment to:main::@8 main::@8: from main::@7 - (byte) numpoints#20 ← phi( main::@7/(byte) numpoints#21 ) - (byte[256]) COLS#27 ← phi( main::@7/(byte[256]) COLS#8 ) - (byte) FILL#8 ← phi( main::@7/(byte) FILL#9 ) - (byte[256]) YPOS#31 ← phi( main::@7/(byte[256]) YPOS#18 ) - (byte[256]) XPOS#28 ← phi( main::@7/(byte[256]) XPOS#18 ) - (byte*) COLORS#4 ← phi( main::@7/(byte*) COLORS#5 ) - (byte*) SCREEN#4 ← phi( main::@7/(byte*) SCREEN#5 ) - to:main::@1 -main::@1: from main::@10 main::@8 - (byte) numpoints#18 ← phi( main::@10/(byte) numpoints#19 main::@8/(byte) numpoints#20 ) - (byte[256]) COLS#25 ← phi( main::@10/(byte[256]) COLS#26 main::@8/(byte[256]) COLS#27 ) - (byte) FILL#6 ← phi( main::@10/(byte) FILL#7 main::@8/(byte) FILL#8 ) - (byte[256]) YPOS#25 ← phi( main::@10/(byte[256]) YPOS#30 main::@8/(byte[256]) YPOS#31 ) - (byte[256]) XPOS#21 ← phi( main::@10/(byte[256]) XPOS#27 main::@8/(byte[256]) XPOS#28 ) - (byte*) COLORS#2 ← phi( main::@10/(byte*) COLORS#3 main::@8/(byte*) COLORS#4 ) - (byte*) SCREEN#2 ← phi( main::@10/(byte*) SCREEN#3 main::@8/(byte*) SCREEN#4 ) - call render param-assignment + (byte) numpoints#21 ← phi( main::@7/(byte) numpoints#23 ) + (byte[256]) COLS#28 ← phi( main::@7/(byte[256]) COLS#8 ) + (byte[256]) YPOS#35 ← phi( main::@7/(byte[256]) YPOS#18 ) + (byte[256]) XPOS#33 ← phi( main::@7/(byte[256]) XPOS#18 ) + (byte*) COLORS#5 ← phi( main::@7/(byte*) COLORS#7 ) + (byte) FILL#3 ← phi( main::@7/(byte) FILL#4 ) + (byte*) SCREEN#2 ← phi( main::@7/(byte*) SCREEN#3 ) + call initscreen param-assignment to:main::@9 -main::@9: from main::@1 +main::@9: from main::@8 + (byte) numpoints#20 ← phi( main::@8/(byte) numpoints#21 ) + (byte[256]) COLS#27 ← phi( main::@8/(byte[256]) COLS#28 ) + (byte[256]) YPOS#31 ← phi( main::@8/(byte[256]) YPOS#35 ) + (byte[256]) XPOS#28 ← phi( main::@8/(byte[256]) XPOS#33 ) + (byte*) COLORS#4 ← phi( main::@8/(byte*) COLORS#5 ) + to:main::@1 +main::@1: from main::@11 main::@9 + (byte) numpoints#18 ← phi( main::@11/(byte) numpoints#19 main::@9/(byte) numpoints#20 ) + (byte[256]) COLS#25 ← phi( main::@11/(byte[256]) COLS#26 main::@9/(byte[256]) COLS#27 ) + (byte[256]) YPOS#25 ← phi( main::@11/(byte[256]) YPOS#30 main::@9/(byte[256]) YPOS#31 ) + (byte[256]) XPOS#21 ← phi( main::@11/(byte[256]) XPOS#27 main::@9/(byte[256]) XPOS#28 ) + (byte*) COLORS#2 ← phi( main::@11/(byte*) COLORS#3 main::@9/(byte*) COLORS#4 ) + call render param-assignment + to:main::@10 +main::@10: from main::@1 (byte) numpoints#22 ← phi( main::@1/(byte) numpoints#18 ) - (byte[256]) COLS#28 ← phi( main::@1/(byte[256]) COLS#25 ) - (byte) FILL#10 ← phi( main::@1/(byte) FILL#6 ) + (byte[256]) COLS#29 ← phi( main::@1/(byte[256]) COLS#25 ) (byte*) COLORS#6 ← phi( main::@1/(byte*) COLORS#2 ) - (byte*) SCREEN#6 ← phi( main::@1/(byte*) SCREEN#2 ) (byte[256]) YPOS#21 ← phi( main::@1/(byte[256]) YPOS#25 ) (byte[256]) XPOS#9 ← phi( main::@1/(byte[256]) XPOS#21 ) call animate param-assignment - to:main::@10 -main::@10: from main::@9 - (byte) numpoints#19 ← phi( main::@9/(byte) numpoints#22 ) - (byte[256]) COLS#26 ← phi( main::@9/(byte[256]) COLS#28 ) - (byte) FILL#7 ← phi( main::@9/(byte) FILL#10 ) - (byte[256]) YPOS#30 ← phi( main::@9/(byte[256]) YPOS#21 ) - (byte[256]) XPOS#27 ← phi( main::@9/(byte[256]) XPOS#9 ) - (byte*) COLORS#3 ← phi( main::@9/(byte*) COLORS#6 ) - (byte*) SCREEN#3 ← phi( main::@9/(byte*) SCREEN#6 ) + to:main::@11 +main::@11: from main::@10 + (byte) numpoints#19 ← phi( main::@10/(byte) numpoints#22 ) + (byte[256]) COLS#26 ← phi( main::@10/(byte[256]) COLS#29 ) + (byte[256]) YPOS#30 ← phi( main::@10/(byte[256]) YPOS#21 ) + (byte[256]) XPOS#27 ← phi( main::@10/(byte[256]) XPOS#9 ) + (byte*) COLORS#3 ← phi( main::@10/(byte*) COLORS#6 ) if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 - (byte[256]) YPOS#9 ← phi( main::@9/(byte[256]) YPOS#21 ) - (byte[256]) XPOS#1 ← phi( main::@9/(byte[256]) XPOS#9 ) +animate: from main::@10 + (byte[256]) YPOS#9 ← phi( main::@10/(byte[256]) YPOS#21 ) + (byte[256]) XPOS#1 ← phi( main::@10/(byte[256]) XPOS#9 ) (byte~) animate::$0 ← (byte[256]) XPOS#1 *idx (byte) 0 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((byte[256]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 @@ -2976,24 +3044,35 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + (byte) FILL#2 ← phi( main::@8/(byte) FILL#3 ) + (byte*) SCREEN#1 ← phi( main::@8/(byte*) SCREEN#2 ) + (byte*) initscreen::screen#0 ← (byte*) SCREEN#1 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(byte*) initscreen::screen#0 initscreen::@1/(byte*) initscreen::screen#1 ) + (byte) FILL#1 ← phi( initscreen/(byte) FILL#2 initscreen::@1/(byte) FILL#1 ) + *((byte*) initscreen::screen#2) ← (byte) FILL#1 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + (boolean~) initscreen::$0 ← (byte*) initscreen::screen#1 < (word) 2048 + if((boolean~) initscreen::$0) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 (byte) numpoints#16 ← phi( main::@1/(byte) numpoints#18 ) (byte[256]) COLS#23 ← phi( main::@1/(byte[256]) COLS#25 ) (byte[256]) YPOS#32 ← phi( main::@1/(byte[256]) YPOS#25 ) - (byte[256]) XPOS#33 ← phi( main::@1/(byte[256]) XPOS#21 ) - (byte) FILL#4 ← phi( main::@1/(byte) FILL#6 ) + (byte[256]) XPOS#34 ← phi( main::@1/(byte[256]) XPOS#21 ) (byte*) COLORS#1 ← phi( main::@1/(byte*) COLORS#2 ) - (byte*) SCREEN#1 ← phi( main::@1/(byte*) SCREEN#2 ) - (byte*) render::chrline#0 ← (byte*) SCREEN#1 (byte*) render::colline#0 ← (byte*) COLORS#1 to:render::@1 render::@1: from render render::@3 (byte) numpoints#14 ← phi( render/(byte) numpoints#16 render::@3/(byte) numpoints#17 ) (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#24 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#32 render::@3/(byte[256]) YPOS#33 ) - (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#33 render::@3/(byte[256]) XPOS#34 ) - (byte*) render::chrline#5 ← phi( render/(byte*) render::chrline#0 render::@3/(byte*) render::chrline#1 ) - (byte) FILL#3 ← phi( render/(byte) FILL#4 render::@3/(byte) FILL#5 ) + (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#34 render::@3/(byte[256]) XPOS#35 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 @@ -3002,8 +3081,6 @@ render::@2: from render::@1 render::@5 (byte[256]) COLS#20 ← phi( render::@1/(byte[256]) COLS#21 render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#22 ← phi( render::@1/(byte[256]) YPOS#26 render::@5/(byte[256]) YPOS#27 ) (byte[256]) XPOS#24 ← phi( render::@1/(byte[256]) XPOS#29 render::@5/(byte[256]) XPOS#30 ) - (byte*) render::chrline#4 ← phi( render::@1/(byte*) render::chrline#5 render::@5/(byte*) render::chrline#2 ) - (byte) FILL#2 ← phi( render::@1/(byte) FILL#3 render::@5/(byte) FILL#1 ) (byte*) render::colline#4 ← phi( render::@1/(byte*) render::colline#5 render::@5/(byte*) render::colline#2 ) (byte) render::y#2 ← phi( render::@1/(byte) render::y#4 render::@5/(byte) render::y#5 ) (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) @@ -3018,15 +3095,12 @@ render::@5: from render::@2 (byte[256]) YPOS#27 ← phi( render::@2/(byte[256]) YPOS#22 ) (byte[256]) XPOS#30 ← phi( render::@2/(byte[256]) XPOS#24 ) (byte) render::y#5 ← phi( render::@2/(byte) render::y#2 ) - (byte*) render::chrline#2 ← phi( render::@2/(byte*) render::chrline#4 ) - (byte) FILL#1 ← phi( render::@2/(byte) FILL#2 ) (byte) render::x#3 ← phi( render::@2/(byte) render::x#2 ) (byte*) render::colline#2 ← phi( render::@2/(byte*) render::colline#4 ) (byte) findcol::return#4 ← phi( render::@2/(byte) findcol::return#0 ) (byte~) render::$0 ← (byte) findcol::return#4 (byte) render::col#0 ← (byte~) render::$0 *((byte*) render::colline#2 + (byte) render::x#3) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#3) ← (byte) FILL#1 (byte) render::x#1 ← ++ (byte) render::x#3 (boolean~) render::$1 ← (byte) render::x#1 < (byte) 40 if((boolean~) render::$1) goto render::@2 @@ -3035,18 +3109,14 @@ render::@3: from render::@5 (byte) numpoints#17 ← phi( render::@5/(byte) numpoints#15 ) (byte[256]) COLS#24 ← phi( render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#33 ← phi( render::@5/(byte[256]) YPOS#27 ) - (byte[256]) XPOS#34 ← phi( render::@5/(byte[256]) XPOS#30 ) - (byte) FILL#5 ← phi( render::@5/(byte) FILL#1 ) + (byte[256]) XPOS#35 ← phi( render::@5/(byte[256]) XPOS#30 ) (byte) render::y#3 ← phi( render::@5/(byte) render::y#5 ) (byte*) render::colline#3 ← phi( render::@5/(byte*) render::colline#2 ) - (byte*) render::chrline#3 ← phi( render::@5/(byte*) render::chrline#2 ) - (byte*~) render::$2 ← (byte*) render::chrline#3 + (byte) 40 - (byte*) render::chrline#1 ← (byte*~) render::$2 - (byte*~) render::$3 ← (byte*) render::colline#3 + (byte) 40 - (byte*) render::colline#1 ← (byte*~) render::$3 + (byte*~) render::$2 ← (byte*) render::colline#3 + (byte) 40 + (byte*) render::colline#1 ← (byte*~) render::$2 (byte) render::y#1 ← ++ (byte) render::y#3 - (boolean~) render::$4 ← (byte) render::y#1 < (byte) 25 - if((boolean~) render::$4) goto render::@1 + (boolean~) render::$3 ← (byte) render::y#1 < (byte) 25 + if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: from render::@3 return @@ -3078,8 +3148,8 @@ findcol::@1: from findcol findcol::@13 to:findcol::@3 findcol::@2: from findcol::@1 (byte) findcol::mincol#12 ← phi( findcol::@1/(byte) findcol::mincol#11 ) - (byte[256]) YPOS#38 ← phi( findcol::@1/(byte[256]) YPOS#8 ) - (byte[256]) XPOS#39 ← phi( findcol::@1/(byte[256]) XPOS#8 ) + (byte[256]) YPOS#39 ← phi( findcol::@1/(byte[256]) YPOS#8 ) + (byte[256]) XPOS#40 ← phi( findcol::@1/(byte[256]) XPOS#8 ) (byte) numpoints#11 ← phi( findcol::@1/(byte) numpoints#10 ) (byte) findcol::i#12 ← phi( findcol::@1/(byte) findcol::i#2 ) (byte[256]) COLS#17 ← phi( findcol::@1/(byte[256]) COLS#16 ) @@ -3093,8 +3163,8 @@ findcol::@2: from findcol::@1 to:findcol::@3 findcol::@3: from findcol::@1 findcol::@2 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@2/(byte) findcol::mincol#12 ) - (byte[256]) YPOS#37 ← phi( findcol::@1/(byte[256]) YPOS#8 findcol::@2/(byte[256]) YPOS#38 ) - (byte[256]) XPOS#38 ← phi( findcol::@1/(byte[256]) XPOS#8 findcol::@2/(byte[256]) XPOS#39 ) + (byte[256]) YPOS#38 ← phi( findcol::@1/(byte[256]) YPOS#8 findcol::@2/(byte[256]) YPOS#39 ) + (byte[256]) XPOS#39 ← phi( findcol::@1/(byte[256]) XPOS#8 findcol::@2/(byte[256]) XPOS#40 ) (byte) numpoints#9 ← phi( findcol::@1/(byte) numpoints#10 findcol::@2/(byte) numpoints#11 ) (byte) findcol::i#11 ← phi( findcol::@1/(byte) findcol::i#2 findcol::@2/(byte) findcol::i#12 ) (byte[256]) COLS#15 ← phi( findcol::@1/(byte[256]) COLS#16 findcol::@2/(byte[256]) COLS#17 ) @@ -3115,8 +3185,8 @@ findcol::@return: from findcol::@27 findcol::@4 to:@RETURN findcol::@6: from findcol::@3 (byte) findcol::mincol#8 ← phi( findcol::@3/(byte) findcol::mincol#10 ) - (byte[256]) YPOS#35 ← phi( findcol::@3/(byte[256]) YPOS#37 ) - (byte[256]) XPOS#36 ← phi( findcol::@3/(byte[256]) XPOS#38 ) + (byte[256]) YPOS#36 ← phi( findcol::@3/(byte[256]) YPOS#38 ) + (byte[256]) XPOS#37 ← phi( findcol::@3/(byte[256]) XPOS#39 ) (byte) numpoints#7 ← phi( findcol::@3/(byte) numpoints#9 ) (byte) findcol::i#9 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#13 ← phi( findcol::@3/(byte[256]) COLS#15 ) @@ -3130,8 +3200,8 @@ findcol::@6: from findcol::@3 to:findcol::@8 findcol::@7: from findcol::@3 (byte) findcol::mincol#9 ← phi( findcol::@3/(byte) findcol::mincol#10 ) - (byte[256]) YPOS#36 ← phi( findcol::@3/(byte[256]) YPOS#37 ) - (byte[256]) XPOS#37 ← phi( findcol::@3/(byte[256]) XPOS#38 ) + (byte[256]) YPOS#37 ← phi( findcol::@3/(byte[256]) YPOS#38 ) + (byte[256]) XPOS#38 ← phi( findcol::@3/(byte[256]) XPOS#39 ) (byte) numpoints#8 ← phi( findcol::@3/(byte) numpoints#9 ) (byte) findcol::i#10 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#14 ← phi( findcol::@3/(byte[256]) COLS#15 ) @@ -3146,8 +3216,8 @@ findcol::@7: from findcol::@3 findcol::@8: from findcol::@6 findcol::@7 (byte) findcol::mincol#7 ← phi( findcol::@6/(byte) findcol::mincol#8 findcol::@7/(byte) findcol::mincol#9 ) (byte) findcol::x#12 ← phi( findcol::@6/(byte) findcol::x#3 findcol::@7/(byte) findcol::x#4 ) - (byte[256]) YPOS#34 ← phi( findcol::@6/(byte[256]) YPOS#35 findcol::@7/(byte[256]) YPOS#36 ) - (byte[256]) XPOS#35 ← phi( findcol::@6/(byte[256]) XPOS#36 findcol::@7/(byte[256]) XPOS#37 ) + (byte[256]) YPOS#34 ← phi( findcol::@6/(byte[256]) YPOS#36 findcol::@7/(byte[256]) YPOS#37 ) + (byte[256]) XPOS#36 ← phi( findcol::@6/(byte[256]) XPOS#37 findcol::@7/(byte[256]) XPOS#38 ) (byte) numpoints#6 ← phi( findcol::@6/(byte) numpoints#7 findcol::@7/(byte) numpoints#8 ) (byte) findcol::i#8 ← phi( findcol::@6/(byte) findcol::i#9 findcol::@7/(byte) findcol::i#10 ) (byte[256]) COLS#12 ← phi( findcol::@6/(byte[256]) COLS#13 findcol::@7/(byte[256]) COLS#14 ) @@ -3162,7 +3232,7 @@ findcol::@9: from findcol::@8 (byte) findcol::mincol#6 ← phi( findcol::@8/(byte) findcol::mincol#7 ) (byte) findcol::x#11 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#29 ← phi( findcol::@8/(byte[256]) YPOS#34 ) - (byte[256]) XPOS#32 ← phi( findcol::@8/(byte[256]) XPOS#35 ) + (byte[256]) XPOS#32 ← phi( findcol::@8/(byte[256]) XPOS#36 ) (byte) numpoints#5 ← phi( findcol::@8/(byte) numpoints#6 ) (byte) findcol::i#7 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#11 ← phi( findcol::@8/(byte[256]) COLS#12 ) @@ -3178,7 +3248,7 @@ findcol::@10: from findcol::@8 (byte) findcol::mincol#5 ← phi( findcol::@8/(byte) findcol::mincol#7 ) (byte) findcol::x#10 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#28 ← phi( findcol::@8/(byte[256]) YPOS#34 ) - (byte[256]) XPOS#31 ← phi( findcol::@8/(byte[256]) XPOS#35 ) + (byte[256]) XPOS#31 ← phi( findcol::@8/(byte[256]) XPOS#36 ) (byte) numpoints#4 ← phi( findcol::@8/(byte) numpoints#6 ) (byte) findcol::i#6 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#10 ← phi( findcol::@8/(byte[256]) COLS#12 ) @@ -3237,24 +3307,22 @@ findcol::@27: from findcol::@13 to:findcol::@return @END: from @BEGIN -Not aliassing across scopes: render::chrline#0 SCREEN#1 +Not aliassing across scopes: initscreen::screen#0 SCREEN#1 Not aliassing across scopes: render::colline#0 COLORS#1 Not aliassing across scopes: findcol::x#0 render::x#2 Not aliassing across scopes: findcol::y#0 render::y#2 Not aliassing across scopes: render::$0 findcol::return#4 -Alias (byte[256]) XPOS#13 = (byte[256]) XPOS#14 (byte[256]) XPOS#15 (byte[256]) XPOS#16 (byte[256]) XPOS#17 (byte[256]) XPOS#18 (byte[256]) XPOS#28 -Alias (byte[256]) YPOS#13 = (byte[256]) YPOS#14 (byte[256]) YPOS#15 (byte[256]) YPOS#16 (byte[256]) YPOS#17 (byte[256]) YPOS#18 (byte[256]) YPOS#31 -Alias (byte[256]) COLS#27 = (byte[256]) COLS#4 (byte[256]) COLS#3 (byte[256]) COLS#5 (byte[256]) COLS#6 (byte[256]) COLS#7 (byte[256]) COLS#8 -Alias (byte*) SCREEN#10 = (byte*) SCREEN#11 (byte*) SCREEN#9 (byte*) SCREEN#8 (byte*) SCREEN#7 (byte*) SCREEN#5 (byte*) SCREEN#4 -Alias (byte*) COLORS#10 = (byte*) COLORS#11 (byte*) COLORS#9 (byte*) COLORS#8 (byte*) COLORS#7 (byte*) COLORS#5 (byte*) COLORS#4 -Alias (byte) FILL#11 = (byte) FILL#14 (byte) FILL#15 (byte) FILL#13 (byte) FILL#12 (byte) FILL#9 (byte) FILL#8 -Alias (byte) numpoints#20 = (byte) numpoints#26 (byte) numpoints#27 (byte) numpoints#25 (byte) numpoints#24 (byte) numpoints#23 (byte) numpoints#21 -Alias (byte[256]) XPOS#1 = (byte[256]) XPOS#9 (byte[256]) XPOS#21 (byte[256]) XPOS#27 (byte[256]) XPOS#2 (byte[256]) XPOS#33 +Alias (byte[256]) XPOS#13 = (byte[256]) XPOS#14 (byte[256]) XPOS#15 (byte[256]) XPOS#16 (byte[256]) XPOS#17 (byte[256]) XPOS#18 (byte[256]) XPOS#33 (byte[256]) XPOS#28 +Alias (byte[256]) YPOS#13 = (byte[256]) YPOS#14 (byte[256]) YPOS#15 (byte[256]) YPOS#16 (byte[256]) YPOS#17 (byte[256]) YPOS#18 (byte[256]) YPOS#35 (byte[256]) YPOS#31 +Alias (byte[256]) COLS#27 = (byte[256]) COLS#4 (byte[256]) COLS#3 (byte[256]) COLS#5 (byte[256]) COLS#6 (byte[256]) COLS#7 (byte[256]) COLS#8 (byte[256]) COLS#28 +Alias (byte*) SCREEN#1 = (byte*) SCREEN#7 (byte*) SCREEN#8 (byte*) SCREEN#6 (byte*) SCREEN#5 (byte*) SCREEN#4 (byte*) SCREEN#3 (byte*) SCREEN#2 +Alias (byte) FILL#2 = (byte) FILL#8 (byte) FILL#9 (byte) FILL#7 (byte) FILL#6 (byte) FILL#5 (byte) FILL#4 (byte) FILL#3 +Alias (byte*) COLORS#10 = (byte*) COLORS#11 (byte*) COLORS#12 (byte*) COLORS#9 (byte*) COLORS#8 (byte*) COLORS#7 (byte*) COLORS#5 (byte*) COLORS#4 +Alias (byte) numpoints#20 = (byte) numpoints#27 (byte) numpoints#28 (byte) numpoints#26 (byte) numpoints#25 (byte) numpoints#24 (byte) numpoints#23 (byte) numpoints#21 +Alias (byte[256]) XPOS#1 = (byte[256]) XPOS#9 (byte[256]) XPOS#21 (byte[256]) XPOS#27 (byte[256]) XPOS#2 (byte[256]) XPOS#34 Alias (byte[256]) YPOS#10 = (byte[256]) YPOS#21 (byte[256]) YPOS#25 (byte[256]) YPOS#30 (byte[256]) YPOS#9 (byte[256]) YPOS#32 -Alias (byte*) SCREEN#1 = (byte*) SCREEN#6 (byte*) SCREEN#2 (byte*) SCREEN#3 Alias (byte*) COLORS#1 = (byte*) COLORS#6 (byte*) COLORS#2 (byte*) COLORS#3 -Alias (byte) FILL#10 = (byte) FILL#6 (byte) FILL#7 (byte) FILL#4 -Alias (byte[256]) COLS#23 = (byte[256]) COLS#28 (byte[256]) COLS#25 (byte[256]) COLS#26 +Alias (byte[256]) COLS#23 = (byte[256]) COLS#29 (byte[256]) COLS#25 (byte[256]) COLS#26 Alias (byte) numpoints#16 = (byte) numpoints#22 (byte) numpoints#18 (byte) numpoints#19 Alias (byte[256]) YPOS#1 = (byte[256]) YPOS#2 Alias (byte[256]) XPOS#10 = (byte[256]) XPOS#11 @@ -3267,16 +3335,13 @@ Alias (byte[256]) XPOS#12 = (byte[256]) XPOS#5 (byte[256]) XPOS#6 Alias (byte) findcol::return#0 = (byte) findcol::return#2 (byte) findcol::return#4 (byte) findcol::return#5 Alias (byte*) render::colline#2 = (byte*) render::colline#4 (byte*) render::colline#3 Alias (byte) render::x#2 = (byte) render::x#3 -Alias (byte) FILL#1 = (byte) FILL#2 (byte) FILL#5 -Alias (byte*) render::chrline#2 = (byte*) render::chrline#4 (byte*) render::chrline#3 Alias (byte) render::y#2 = (byte) render::y#5 (byte) render::y#3 -Alias (byte[256]) XPOS#19 = (byte[256]) XPOS#30 (byte[256]) XPOS#24 (byte[256]) XPOS#34 +Alias (byte[256]) XPOS#19 = (byte[256]) XPOS#30 (byte[256]) XPOS#24 (byte[256]) XPOS#35 Alias (byte[256]) YPOS#19 = (byte[256]) YPOS#27 (byte[256]) YPOS#22 (byte[256]) YPOS#33 Alias (byte[256]) COLS#18 = (byte[256]) COLS#22 (byte[256]) COLS#20 (byte[256]) COLS#24 Alias (byte) numpoints#12 = (byte) numpoints#15 (byte) numpoints#13 (byte) numpoints#17 Alias (byte) render::col#0 = (byte~) render::$0 -Alias (byte*) render::chrline#1 = (byte*~) render::$2 -Alias (byte*) render::colline#1 = (byte*~) render::$3 +Alias (byte*) render::colline#1 = (byte*~) render::$2 Alias (byte) findcol::x#0 = (byte) findcol::x#5 Alias (byte) findcol::y#0 = (byte) findcol::y#8 Alias (byte) findcol::xp#0 = (byte~) findcol::$0 (byte) findcol::xp#4 @@ -3287,8 +3352,8 @@ Alias (byte) findcol::mindiff#10 = (byte) findcol::mindiff#9 Alias (byte[256]) COLS#16 = (byte[256]) COLS#17 Alias (byte) findcol::i#12 = (byte) findcol::i#2 Alias (byte) numpoints#10 = (byte) numpoints#11 -Alias (byte[256]) XPOS#39 = (byte[256]) XPOS#8 -Alias (byte[256]) YPOS#38 = (byte[256]) YPOS#8 +Alias (byte[256]) XPOS#40 = (byte[256]) XPOS#8 +Alias (byte[256]) YPOS#39 = (byte[256]) YPOS#8 Alias (byte) findcol::mincol#11 = (byte) findcol::mincol#12 Alias (byte) findcol::xp#1 = (byte) findcol::xp#2 (byte) findcol::xp#3 Alias (byte) findcol::x#2 = (byte) findcol::x#3 (byte) findcol::x#4 @@ -3298,8 +3363,8 @@ Alias (byte) findcol::mindiff#6 = (byte) findcol::mindiff#8 (byte) findcol::mind Alias (byte[256]) COLS#13 = (byte[256]) COLS#15 (byte[256]) COLS#14 Alias (byte) findcol::i#10 = (byte) findcol::i#9 (byte) findcol::i#11 Alias (byte) numpoints#7 = (byte) numpoints#9 (byte) numpoints#8 -Alias (byte[256]) XPOS#36 = (byte[256]) XPOS#38 (byte[256]) XPOS#37 -Alias (byte[256]) YPOS#35 = (byte[256]) YPOS#37 (byte[256]) YPOS#36 +Alias (byte[256]) XPOS#37 = (byte[256]) XPOS#39 (byte[256]) XPOS#38 +Alias (byte[256]) YPOS#36 = (byte[256]) YPOS#38 (byte[256]) YPOS#37 Alias (byte) findcol::mincol#10 = (byte) findcol::mincol#8 (byte) findcol::mincol#9 Alias (byte) findcol::diff#0 = (byte~) findcol::$5 Alias (byte) findcol::diff#1 = (byte~) findcol::$6 @@ -3310,7 +3375,7 @@ Alias (byte) findcol::mindiff#3 = (byte) findcol::mindiff#4 (byte) findcol::mind Alias (byte[256]) COLS#10 = (byte[256]) COLS#11 (byte[256]) COLS#12 Alias (byte) findcol::i#6 = (byte) findcol::i#7 (byte) findcol::i#8 Alias (byte) numpoints#4 = (byte) numpoints#5 (byte) numpoints#6 -Alias (byte[256]) XPOS#31 = (byte[256]) XPOS#32 (byte[256]) XPOS#35 +Alias (byte[256]) XPOS#31 = (byte[256]) XPOS#32 (byte[256]) XPOS#36 Alias (byte[256]) YPOS#28 = (byte[256]) YPOS#29 (byte[256]) YPOS#34 Alias (byte) findcol::x#10 = (byte) findcol::x#11 (byte) findcol::x#12 Alias (byte) findcol::mincol#5 = (byte) findcol::mincol#6 (byte) findcol::mincol#7 @@ -3333,9 +3398,9 @@ CONTROL FLOW GRAPH to:@END main: from @BEGIN (byte) numpoints#20 ← phi( @BEGIN/(byte) 6 ) - (byte) FILL#11 ← phi( @BEGIN/(byte) 230 ) (byte*) COLORS#10 ← phi( @BEGIN/(word) 55296 ) - (byte*) SCREEN#10 ← phi( @BEGIN/(word) 1024 ) + (byte) FILL#2 ← phi( @BEGIN/(byte) 230 ) + (byte*) SCREEN#1 ← phi( @BEGIN/(word) 1024 ) (byte[256]) COLS#27 ← phi( @BEGIN/(word) 4608 ) (byte[256]) YPOS#13 ← phi( @BEGIN/(word) 4352 ) (byte[256]) XPOS#13 ← phi( @BEGIN/(word) 4096 ) @@ -3357,27 +3422,28 @@ main::@7: from main::@6 call addpoint param-assignment to:main::@8 main::@8: from main::@7 - to:main::@1 -main::@1: from main::@10 main::@8 - (byte) numpoints#16 ← phi( main::@10/(byte) numpoints#16 main::@8/(byte) numpoints#20 ) - (byte[256]) COLS#23 ← phi( main::@10/(byte[256]) COLS#23 main::@8/(byte[256]) COLS#27 ) - (byte) FILL#10 ← phi( main::@10/(byte) FILL#10 main::@8/(byte) FILL#11 ) - (byte[256]) YPOS#10 ← phi( main::@10/(byte[256]) YPOS#10 main::@8/(byte[256]) YPOS#13 ) - (byte[256]) XPOS#1 ← phi( main::@10/(byte[256]) XPOS#1 main::@8/(byte[256]) XPOS#13 ) - (byte*) COLORS#1 ← phi( main::@10/(byte*) COLORS#1 main::@8/(byte*) COLORS#10 ) - (byte*) SCREEN#1 ← phi( main::@10/(byte*) SCREEN#1 main::@8/(byte*) SCREEN#10 ) - call render param-assignment + call initscreen param-assignment to:main::@9 -main::@9: from main::@1 - call animate param-assignment +main::@9: from main::@8 + to:main::@1 +main::@1: from main::@11 main::@9 + (byte) numpoints#16 ← phi( main::@11/(byte) numpoints#16 main::@9/(byte) numpoints#20 ) + (byte[256]) COLS#23 ← phi( main::@11/(byte[256]) COLS#23 main::@9/(byte[256]) COLS#27 ) + (byte[256]) YPOS#10 ← phi( main::@11/(byte[256]) YPOS#10 main::@9/(byte[256]) YPOS#13 ) + (byte[256]) XPOS#1 ← phi( main::@11/(byte[256]) XPOS#1 main::@9/(byte[256]) XPOS#13 ) + (byte*) COLORS#1 ← phi( main::@11/(byte*) COLORS#1 main::@9/(byte*) COLORS#10 ) + call render param-assignment to:main::@10 -main::@10: from main::@9 +main::@10: from main::@1 + call animate param-assignment + to:main::@11 +main::@11: from main::@10 if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 +animate: from main::@10 (byte~) animate::$0 ← (byte[256]) XPOS#1 *idx (byte) 0 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((byte[256]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 @@ -3469,8 +3535,21 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + (byte*) initscreen::screen#0 ← (byte*) SCREEN#1 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(byte*) initscreen::screen#0 initscreen::@1/(byte*) initscreen::screen#1 ) + (byte) FILL#1 ← phi( initscreen/(byte) FILL#2 initscreen::@1/(byte) FILL#1 ) + *((byte*) initscreen::screen#2) ← (byte) FILL#1 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + (boolean~) initscreen::$0 ← (byte*) initscreen::screen#1 < (word) 2048 + if((boolean~) initscreen::$0) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 - (byte*) render::chrline#0 ← (byte*) SCREEN#1 (byte*) render::colline#0 ← (byte*) COLORS#1 to:render::@1 render::@1: from render render::@3 @@ -3478,8 +3557,6 @@ render::@1: from render render::@3 (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#10 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#1 render::@3/(byte[256]) XPOS#19 ) - (byte*) render::chrline#5 ← phi( render/(byte*) render::chrline#0 render::@3/(byte*) render::chrline#1 ) - (byte) FILL#3 ← phi( render/(byte) FILL#10 render::@3/(byte) FILL#1 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 @@ -3488,8 +3565,6 @@ render::@2: from render::@1 render::@5 (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 render::@5/(byte[256]) COLS#18 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 render::@5/(byte[256]) YPOS#19 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 render::@5/(byte[256]) XPOS#19 ) - (byte*) render::chrline#2 ← phi( render::@1/(byte*) render::chrline#5 render::@5/(byte*) render::chrline#2 ) - (byte) FILL#1 ← phi( render::@1/(byte) FILL#3 render::@5/(byte) FILL#1 ) (byte*) render::colline#2 ← phi( render::@1/(byte*) render::colline#5 render::@5/(byte*) render::colline#2 ) (byte) render::y#2 ← phi( render::@1/(byte) render::y#4 render::@5/(byte) render::y#2 ) (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) @@ -3500,17 +3575,15 @@ render::@2: from render::@1 render::@5 render::@5: from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) FILL#1 (byte) render::x#1 ← ++ (byte) render::x#2 (boolean~) render::$1 ← (byte) render::x#1 < (byte) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 (byte) render::y#1 ← ++ (byte) render::y#2 - (boolean~) render::$4 ← (byte) render::y#1 < (byte) 25 - if((boolean~) render::$4) goto render::@1 + (boolean~) render::$3 ← (byte) render::y#1 < (byte) 25 + if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: from render::@3 return @@ -3524,11 +3597,11 @@ findcol::@1: from findcol findcol::@13 (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 findcol::@13/(byte) findcol::y#9 ) (byte) findcol::x#1 ← phi( findcol/(byte) findcol::x#0 findcol::@13/(byte) findcol::x#6 ) - (byte[256]) YPOS#38 ← phi( findcol/(byte[256]) YPOS#19 findcol::@13/(byte[256]) YPOS#20 ) + (byte[256]) YPOS#39 ← phi( findcol/(byte[256]) YPOS#19 findcol::@13/(byte[256]) YPOS#20 ) (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) - (byte[256]) XPOS#39 ← phi( findcol/(byte[256]) XPOS#19 findcol::@13/(byte[256]) XPOS#20 ) - (byte) findcol::xp#0 ← (byte[256]) XPOS#39 *idx (byte) findcol::i#12 - (byte) findcol::yp#0 ← (byte[256]) YPOS#38 *idx (byte) findcol::i#12 + (byte[256]) XPOS#40 ← phi( findcol/(byte[256]) XPOS#19 findcol::@13/(byte[256]) XPOS#20 ) + (byte) findcol::xp#0 ← (byte[256]) XPOS#40 *idx (byte) findcol::i#12 + (byte) findcol::yp#0 ← (byte[256]) YPOS#39 *idx (byte) findcol::i#12 (boolean~) findcol::$2 ← (byte) findcol::x#1 == (byte) findcol::xp#0 if((boolean~) findcol::$2) goto findcol::@2 to:findcol::@3 @@ -3538,8 +3611,8 @@ findcol::@2: from findcol::@1 to:findcol::@3 findcol::@3: from findcol::@1 findcol::@2 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@2/(byte) findcol::mincol#11 ) - (byte[256]) YPOS#35 ← phi( findcol::@1/(byte[256]) YPOS#38 findcol::@2/(byte[256]) YPOS#38 ) - (byte[256]) XPOS#36 ← phi( findcol::@1/(byte[256]) XPOS#39 findcol::@2/(byte[256]) XPOS#39 ) + (byte[256]) YPOS#36 ← phi( findcol::@1/(byte[256]) YPOS#39 findcol::@2/(byte[256]) YPOS#39 ) + (byte[256]) XPOS#37 ← phi( findcol::@1/(byte[256]) XPOS#40 findcol::@2/(byte[256]) XPOS#40 ) (byte) numpoints#7 ← phi( findcol::@1/(byte) numpoints#10 findcol::@2/(byte) numpoints#10 ) (byte) findcol::i#10 ← phi( findcol::@1/(byte) findcol::i#12 findcol::@2/(byte) findcol::i#12 ) (byte[256]) COLS#13 ← phi( findcol::@1/(byte[256]) COLS#16 findcol::@2/(byte[256]) COLS#16 ) @@ -3566,8 +3639,8 @@ findcol::@7: from findcol::@3 findcol::@8: from findcol::@6 findcol::@7 (byte) findcol::mincol#5 ← phi( findcol::@6/(byte) findcol::mincol#10 findcol::@7/(byte) findcol::mincol#10 ) (byte) findcol::x#10 ← phi( findcol::@6/(byte) findcol::x#2 findcol::@7/(byte) findcol::x#2 ) - (byte[256]) YPOS#28 ← phi( findcol::@6/(byte[256]) YPOS#35 findcol::@7/(byte[256]) YPOS#35 ) - (byte[256]) XPOS#31 ← phi( findcol::@6/(byte[256]) XPOS#36 findcol::@7/(byte[256]) XPOS#36 ) + (byte[256]) YPOS#28 ← phi( findcol::@6/(byte[256]) YPOS#36 findcol::@7/(byte[256]) YPOS#36 ) + (byte[256]) XPOS#31 ← phi( findcol::@6/(byte[256]) XPOS#37 findcol::@7/(byte[256]) XPOS#37 ) (byte) numpoints#4 ← phi( findcol::@6/(byte) numpoints#7 findcol::@7/(byte) numpoints#7 ) (byte) findcol::i#6 ← phi( findcol::@6/(byte) findcol::i#10 findcol::@7/(byte) findcol::i#10 ) (byte[256]) COLS#10 ← phi( findcol::@6/(byte[256]) COLS#13 findcol::@7/(byte[256]) COLS#13 ) @@ -3624,9 +3697,9 @@ findcol::@27: from findcol::@13 Redundant Phi (byte[256]) XPOS#13 (word) 4096 Redundant Phi (byte[256]) YPOS#13 (word) 4352 Redundant Phi (byte[256]) COLS#27 (word) 4608 -Redundant Phi (byte*) SCREEN#10 (word) 1024 +Redundant Phi (byte*) SCREEN#1 (word) 1024 +Redundant Phi (byte) FILL#2 (byte) 230 Redundant Phi (byte*) COLORS#10 (word) 55296 -Redundant Phi (byte) FILL#11 (byte) 230 Redundant Phi (byte) numpoints#20 (byte) 6 Redundant Phi (byte[256]) YPOS#1 (byte[256]) YPOS#10 Redundant Phi (byte[256]) XPOS#10 (byte[256]) XPOS#1 @@ -3647,8 +3720,8 @@ Redundant Phi (byte) findcol::mindiff#6 (byte) findcol::mindiff#10 Redundant Phi (byte[256]) COLS#13 (byte[256]) COLS#16 Redundant Phi (byte) findcol::i#10 (byte) findcol::i#12 Redundant Phi (byte) numpoints#7 (byte) numpoints#10 -Redundant Phi (byte[256]) XPOS#36 (byte[256]) XPOS#39 -Redundant Phi (byte[256]) YPOS#35 (byte[256]) YPOS#38 +Redundant Phi (byte[256]) XPOS#37 (byte[256]) XPOS#40 +Redundant Phi (byte[256]) YPOS#36 (byte[256]) YPOS#39 Redundant Phi (byte) findcol::mincol#10 (byte) findcol::mincol#11 Redundant Phi (byte) findcol::y#2 (byte) findcol::y#10 Redundant Phi (byte) findcol::yp#2 (byte) findcol::yp#5 @@ -3656,8 +3729,8 @@ Redundant Phi (byte) findcol::mindiff#3 (byte) findcol::mindiff#6 Redundant Phi (byte[256]) COLS#10 (byte[256]) COLS#13 Redundant Phi (byte) findcol::i#6 (byte) findcol::i#10 Redundant Phi (byte) numpoints#4 (byte) numpoints#7 -Redundant Phi (byte[256]) XPOS#31 (byte[256]) XPOS#36 -Redundant Phi (byte[256]) YPOS#28 (byte[256]) YPOS#35 +Redundant Phi (byte[256]) XPOS#31 (byte[256]) XPOS#37 +Redundant Phi (byte[256]) YPOS#28 (byte[256]) YPOS#36 Redundant Phi (byte) findcol::x#10 (byte) findcol::x#2 Redundant Phi (byte) findcol::mincol#5 (byte) findcol::mincol#10 Redundant Phi (byte) findcol::mindiff#2 (byte) findcol::mindiff#3 @@ -3700,27 +3773,28 @@ main::@7: from main::@6 call addpoint param-assignment to:main::@8 main::@8: from main::@7 - to:main::@1 -main::@1: from main::@10 main::@8 - (byte) numpoints#16 ← phi( main::@10/(byte) numpoints#16 main::@8/(byte) 6 ) - (byte[256]) COLS#23 ← phi( main::@10/(byte[256]) COLS#23 main::@8/(word) 4608 ) - (byte) FILL#10 ← phi( main::@10/(byte) FILL#10 main::@8/(byte) 230 ) - (byte[256]) YPOS#10 ← phi( main::@10/(byte[256]) YPOS#10 main::@8/(word) 4352 ) - (byte[256]) XPOS#1 ← phi( main::@10/(byte[256]) XPOS#1 main::@8/(word) 4096 ) - (byte*) COLORS#1 ← phi( main::@10/(byte*) COLORS#1 main::@8/(word) 55296 ) - (byte*) SCREEN#1 ← phi( main::@10/(byte*) SCREEN#1 main::@8/(word) 1024 ) - call render param-assignment + call initscreen param-assignment to:main::@9 -main::@9: from main::@1 - call animate param-assignment +main::@9: from main::@8 + to:main::@1 +main::@1: from main::@11 main::@9 + (byte) numpoints#16 ← phi( main::@11/(byte) numpoints#16 main::@9/(byte) 6 ) + (byte[256]) COLS#23 ← phi( main::@11/(byte[256]) COLS#23 main::@9/(word) 4608 ) + (byte[256]) YPOS#10 ← phi( main::@11/(byte[256]) YPOS#10 main::@9/(word) 4352 ) + (byte[256]) XPOS#1 ← phi( main::@11/(byte[256]) XPOS#1 main::@9/(word) 4096 ) + (byte*) COLORS#1 ← phi( main::@11/(byte*) COLORS#1 main::@9/(word) 55296 ) + call render param-assignment to:main::@10 -main::@10: from main::@9 +main::@10: from main::@1 + call animate param-assignment + to:main::@11 +main::@11: from main::@10 if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 +animate: from main::@10 (byte~) animate::$0 ← (byte[256]) XPOS#1 *idx (byte) 0 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((byte[256]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 @@ -3801,8 +3875,21 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + (byte*) initscreen::screen#0 ← (word) 1024 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(byte*) initscreen::screen#0 initscreen::@1/(byte*) initscreen::screen#1 ) + (byte) FILL#1 ← phi( initscreen/(byte) 230 initscreen::@1/(byte) FILL#1 ) + *((byte*) initscreen::screen#2) ← (byte) FILL#1 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + (boolean~) initscreen::$0 ← (byte*) initscreen::screen#1 < (word) 2048 + if((boolean~) initscreen::$0) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 - (byte*) render::chrline#0 ← (byte*) SCREEN#1 (byte*) render::colline#0 ← (byte*) COLORS#1 to:render::@1 render::@1: from render render::@3 @@ -3810,8 +3897,6 @@ render::@1: from render render::@3 (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#10 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#1 render::@3/(byte[256]) XPOS#19 ) - (byte*) render::chrline#5 ← phi( render/(byte*) render::chrline#0 render::@3/(byte*) render::chrline#1 ) - (byte) FILL#3 ← phi( render/(byte) FILL#10 render::@3/(byte) FILL#1 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 @@ -3820,8 +3905,6 @@ render::@2: from render::@1 render::@5 (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 render::@5/(byte[256]) COLS#18 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 render::@5/(byte[256]) YPOS#19 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 render::@5/(byte[256]) XPOS#19 ) - (byte*) render::chrline#2 ← phi( render::@1/(byte*) render::chrline#5 render::@5/(byte*) render::chrline#2 ) - (byte) FILL#1 ← phi( render::@1/(byte) FILL#3 render::@5/(byte) FILL#1 ) (byte*) render::colline#2 ← phi( render::@1/(byte*) render::colline#5 render::@5/(byte*) render::colline#2 ) (byte) render::y#2 ← phi( render::@1/(byte) render::y#4 render::@5/(byte) render::y#2 ) (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) @@ -3832,17 +3915,15 @@ render::@2: from render::@1 render::@5 render::@5: from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) FILL#1 (byte) render::x#1 ← ++ (byte) render::x#2 (boolean~) render::$1 ← (byte) render::x#1 < (byte) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 (byte) render::y#1 ← ++ (byte) render::y#2 - (boolean~) render::$4 ← (byte) render::y#1 < (byte) 25 - if((boolean~) render::$4) goto render::@1 + (boolean~) render::$3 ← (byte) render::y#1 < (byte) 25 + if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: from render::@3 return @@ -3856,11 +3937,11 @@ findcol::@1: from findcol findcol::@13 (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 findcol::@13/(byte) findcol::y#1 ) (byte) findcol::x#1 ← phi( findcol/(byte) findcol::x#0 findcol::@13/(byte) findcol::x#1 ) - (byte[256]) YPOS#38 ← phi( findcol/(byte[256]) YPOS#19 findcol::@13/(byte[256]) YPOS#38 ) + (byte[256]) YPOS#39 ← phi( findcol/(byte[256]) YPOS#19 findcol::@13/(byte[256]) YPOS#39 ) (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) - (byte[256]) XPOS#39 ← phi( findcol/(byte[256]) XPOS#19 findcol::@13/(byte[256]) XPOS#39 ) - (byte) findcol::xp#0 ← (byte[256]) XPOS#39 *idx (byte) findcol::i#12 - (byte) findcol::yp#0 ← (byte[256]) YPOS#38 *idx (byte) findcol::i#12 + (byte[256]) XPOS#40 ← phi( findcol/(byte[256]) XPOS#19 findcol::@13/(byte[256]) XPOS#40 ) + (byte) findcol::xp#0 ← (byte[256]) XPOS#40 *idx (byte) findcol::i#12 + (byte) findcol::yp#0 ← (byte[256]) YPOS#39 *idx (byte) findcol::i#12 (boolean~) findcol::$2 ← (byte) findcol::x#1 == (byte) findcol::xp#0 if((boolean~) findcol::$2) goto findcol::@2 to:findcol::@3 @@ -3916,23 +3997,20 @@ findcol::@27: from findcol::@13 to:findcol::@return @END: from @BEGIN -Self Phi Eliminated (byte*) SCREEN#1 Self Phi Eliminated (byte*) COLORS#1 Self Phi Eliminated (byte[256]) XPOS#1 Self Phi Eliminated (byte[256]) YPOS#10 -Self Phi Eliminated (byte) FILL#10 Self Phi Eliminated (byte[256]) COLS#23 Self Phi Eliminated (byte) numpoints#16 +Self Phi Eliminated (byte) FILL#1 Self Phi Eliminated (byte) render::y#2 Self Phi Eliminated (byte*) render::colline#2 -Self Phi Eliminated (byte) FILL#1 -Self Phi Eliminated (byte*) render::chrline#2 Self Phi Eliminated (byte[256]) XPOS#19 Self Phi Eliminated (byte[256]) YPOS#19 Self Phi Eliminated (byte[256]) COLS#18 Self Phi Eliminated (byte) numpoints#12 -Self Phi Eliminated (byte[256]) XPOS#39 -Self Phi Eliminated (byte[256]) YPOS#38 +Self Phi Eliminated (byte[256]) XPOS#40 +Self Phi Eliminated (byte[256]) YPOS#39 Self Phi Eliminated (byte) findcol::x#1 Self Phi Eliminated (byte) findcol::y#1 Self Phi Eliminated (byte[256]) COLS#16 @@ -3961,27 +4039,28 @@ main::@7: from main::@6 call addpoint param-assignment to:main::@8 main::@8: from main::@7 - to:main::@1 -main::@1: from main::@10 main::@8 - (byte) numpoints#16 ← phi( main::@8/(byte) 6 ) - (byte[256]) COLS#23 ← phi( main::@8/(word) 4608 ) - (byte) FILL#10 ← phi( main::@8/(byte) 230 ) - (byte[256]) YPOS#10 ← phi( main::@8/(word) 4352 ) - (byte[256]) XPOS#1 ← phi( main::@8/(word) 4096 ) - (byte*) COLORS#1 ← phi( main::@8/(word) 55296 ) - (byte*) SCREEN#1 ← phi( main::@8/(word) 1024 ) - call render param-assignment + call initscreen param-assignment to:main::@9 -main::@9: from main::@1 - call animate param-assignment +main::@9: from main::@8 + to:main::@1 +main::@1: from main::@11 main::@9 + (byte) numpoints#16 ← phi( main::@9/(byte) 6 ) + (byte[256]) COLS#23 ← phi( main::@9/(word) 4608 ) + (byte[256]) YPOS#10 ← phi( main::@9/(word) 4352 ) + (byte[256]) XPOS#1 ← phi( main::@9/(word) 4096 ) + (byte*) COLORS#1 ← phi( main::@9/(word) 55296 ) + call render param-assignment to:main::@10 -main::@10: from main::@9 +main::@10: from main::@1 + call animate param-assignment + to:main::@11 +main::@11: from main::@10 if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 +animate: from main::@10 (byte~) animate::$0 ← (byte[256]) XPOS#1 *idx (byte) 0 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((byte[256]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 @@ -4062,8 +4141,21 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + (byte*) initscreen::screen#0 ← (word) 1024 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(byte*) initscreen::screen#0 initscreen::@1/(byte*) initscreen::screen#1 ) + (byte) FILL#1 ← phi( initscreen/(byte) 230 ) + *((byte*) initscreen::screen#2) ← (byte) FILL#1 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + (boolean~) initscreen::$0 ← (byte*) initscreen::screen#1 < (word) 2048 + if((boolean~) initscreen::$0) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 - (byte*) render::chrline#0 ← (byte*) SCREEN#1 (byte*) render::colline#0 ← (byte*) COLORS#1 to:render::@1 render::@1: from render render::@3 @@ -4071,8 +4163,6 @@ render::@1: from render render::@3 (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#10 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#1 render::@3/(byte[256]) XPOS#19 ) - (byte*) render::chrline#5 ← phi( render/(byte*) render::chrline#0 render::@3/(byte*) render::chrline#1 ) - (byte) FILL#3 ← phi( render/(byte) FILL#10 render::@3/(byte) FILL#1 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 @@ -4081,8 +4171,6 @@ render::@2: from render::@1 render::@5 (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 ) - (byte*) render::chrline#2 ← phi( render::@1/(byte*) render::chrline#5 ) - (byte) FILL#1 ← phi( render::@1/(byte) FILL#3 ) (byte*) render::colline#2 ← phi( render::@1/(byte*) render::colline#5 ) (byte) render::y#2 ← phi( render::@1/(byte) render::y#4 ) (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) @@ -4093,17 +4181,15 @@ render::@2: from render::@1 render::@5 render::@5: from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) FILL#1 (byte) render::x#1 ← ++ (byte) render::x#2 (boolean~) render::$1 ← (byte) render::x#1 < (byte) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 (byte) render::y#1 ← ++ (byte) render::y#2 - (boolean~) render::$4 ← (byte) render::y#1 < (byte) 25 - if((boolean~) render::$4) goto render::@1 + (boolean~) render::$3 ← (byte) render::y#1 < (byte) 25 + if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: from render::@3 return @@ -4117,11 +4203,11 @@ findcol::@1: from findcol findcol::@13 (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 ) (byte) findcol::x#1 ← phi( findcol/(byte) findcol::x#0 ) - (byte[256]) YPOS#38 ← phi( findcol/(byte[256]) YPOS#19 ) + (byte[256]) YPOS#39 ← phi( findcol/(byte[256]) YPOS#19 ) (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) - (byte[256]) XPOS#39 ← phi( findcol/(byte[256]) XPOS#19 ) - (byte) findcol::xp#0 ← (byte[256]) XPOS#39 *idx (byte) findcol::i#12 - (byte) findcol::yp#0 ← (byte[256]) YPOS#38 *idx (byte) findcol::i#12 + (byte[256]) XPOS#40 ← phi( findcol/(byte[256]) XPOS#19 ) + (byte) findcol::xp#0 ← (byte[256]) XPOS#40 *idx (byte) findcol::i#12 + (byte) findcol::yp#0 ← (byte[256]) YPOS#39 *idx (byte) findcol::i#12 (boolean~) findcol::$2 ← (byte) findcol::x#1 == (byte) findcol::xp#0 if((boolean~) findcol::$2) goto findcol::@2 to:findcol::@3 @@ -4183,8 +4269,9 @@ Simple Condition (boolean~) animate::$11 if((byte~) animate::$10==(byte) 255) go Simple Condition (boolean~) animate::$15 if((byte~) animate::$14==(byte) 25) goto animate::@7 Simple Condition (boolean~) animate::$19 if((byte~) animate::$18==(byte) 255) goto animate::@9 Simple Condition (boolean~) animate::$23 if((byte~) animate::$22>=(byte) 40) goto animate::@11 +Simple Condition (boolean~) initscreen::$0 if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 Simple Condition (boolean~) render::$1 if((byte) render::x#1<(byte) 40) goto render::@2 -Simple Condition (boolean~) render::$4 if((byte) render::y#1<(byte) 25) goto render::@1 +Simple Condition (boolean~) render::$3 if((byte) render::y#1<(byte) 25) goto render::@1 Simple Condition (boolean~) findcol::$2 if((byte) findcol::x#1==(byte) findcol::xp#0) goto findcol::@2 Simple Condition (boolean~) findcol::$3 if((byte) findcol::y#1==(byte) findcol::yp#0) goto findcol::@4 Simple Condition (boolean~) findcol::$4 if((byte) findcol::x#1<(byte) findcol::xp#0) goto findcol::@6 @@ -4215,27 +4302,28 @@ main::@7: from main::@6 call addpoint param-assignment to:main::@8 main::@8: from main::@7 - to:main::@1 -main::@1: from main::@10 main::@8 - (byte) numpoints#16 ← phi( main::@8/(byte) 6 ) - (byte[256]) COLS#23 ← phi( main::@8/(word) 4608 ) - (byte) FILL#10 ← phi( main::@8/(byte) 230 ) - (byte[256]) YPOS#10 ← phi( main::@8/(word) 4352 ) - (byte[256]) XPOS#1 ← phi( main::@8/(word) 4096 ) - (byte*) COLORS#1 ← phi( main::@8/(word) 55296 ) - (byte*) SCREEN#1 ← phi( main::@8/(word) 1024 ) - call render param-assignment + call initscreen param-assignment to:main::@9 -main::@9: from main::@1 - call animate param-assignment +main::@9: from main::@8 + to:main::@1 +main::@1: from main::@11 main::@9 + (byte) numpoints#16 ← phi( main::@9/(byte) 6 ) + (byte[256]) COLS#23 ← phi( main::@9/(word) 4608 ) + (byte[256]) YPOS#10 ← phi( main::@9/(word) 4352 ) + (byte[256]) XPOS#1 ← phi( main::@9/(word) 4096 ) + (byte*) COLORS#1 ← phi( main::@9/(word) 55296 ) + call render param-assignment to:main::@10 -main::@10: from main::@9 +main::@10: from main::@1 + call animate param-assignment + to:main::@11 +main::@11: from main::@10 if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 +animate: from main::@10 (byte~) animate::$0 ← (byte[256]) XPOS#1 *idx (byte) 0 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((byte[256]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 @@ -4310,8 +4398,20 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + (byte*) initscreen::screen#0 ← (word) 1024 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(byte*) initscreen::screen#0 initscreen::@1/(byte*) initscreen::screen#1 ) + (byte) FILL#1 ← phi( initscreen/(byte) 230 ) + *((byte*) initscreen::screen#2) ← (byte) FILL#1 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 - (byte*) render::chrline#0 ← (byte*) SCREEN#1 (byte*) render::colline#0 ← (byte*) COLORS#1 to:render::@1 render::@1: from render render::@3 @@ -4319,8 +4419,6 @@ render::@1: from render render::@3 (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#10 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#1 render::@3/(byte[256]) XPOS#19 ) - (byte*) render::chrline#5 ← phi( render/(byte*) render::chrline#0 render::@3/(byte*) render::chrline#1 ) - (byte) FILL#3 ← phi( render/(byte) FILL#10 render::@3/(byte) FILL#1 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 @@ -4329,8 +4427,6 @@ render::@2: from render::@1 render::@5 (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 ) - (byte*) render::chrline#2 ← phi( render::@1/(byte*) render::chrline#5 ) - (byte) FILL#1 ← phi( render::@1/(byte) FILL#3 ) (byte*) render::colline#2 ← phi( render::@1/(byte*) render::colline#5 ) (byte) render::y#2 ← phi( render::@1/(byte) render::y#4 ) (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) @@ -4341,12 +4437,10 @@ render::@2: from render::@1 render::@5 render::@5: from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) FILL#1 (byte) render::x#1 ← ++ (byte) render::x#2 if((byte) render::x#1<(byte) 40) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 (byte) render::y#1 ← ++ (byte) render::y#2 if((byte) render::y#1<(byte) 25) goto render::@1 @@ -4363,11 +4457,11 @@ findcol::@1: from findcol findcol::@13 (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 ) (byte) findcol::x#1 ← phi( findcol/(byte) findcol::x#0 ) - (byte[256]) YPOS#38 ← phi( findcol/(byte[256]) YPOS#19 ) + (byte[256]) YPOS#39 ← phi( findcol/(byte[256]) YPOS#19 ) (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) - (byte[256]) XPOS#39 ← phi( findcol/(byte[256]) XPOS#19 ) - (byte) findcol::xp#0 ← (byte[256]) XPOS#39 *idx (byte) findcol::i#12 - (byte) findcol::yp#0 ← (byte[256]) YPOS#38 *idx (byte) findcol::i#12 + (byte[256]) XPOS#40 ← phi( findcol/(byte[256]) XPOS#19 ) + (byte) findcol::xp#0 ← (byte[256]) XPOS#40 *idx (byte) findcol::i#12 + (byte) findcol::yp#0 ← (byte[256]) YPOS#39 *idx (byte) findcol::i#12 if((byte) findcol::x#1==(byte) findcol::xp#0) goto findcol::@2 to:findcol::@3 findcol::@2: from findcol::@1 @@ -4417,7 +4511,7 @@ findcol::@27: from findcol::@13 to:findcol::@return @END: from @BEGIN -Culled Empty Block (label) main::@8 +Culled Empty Block (label) main::@9 Culled Empty Block (label) findcol::@4 Culled Empty Block (label) findcol::@27 Succesful SSA optimization Pass2CullEmptyBlocks @@ -4442,27 +4536,28 @@ main::@6: from main::@5 to:main::@7 main::@7: from main::@6 call addpoint param-assignment + to:main::@8 +main::@8: from main::@7 + call initscreen param-assignment to:main::@1 -main::@1: from main::@10 main::@7 - (byte) numpoints#16 ← phi( main::@7/(byte) 6 ) - (byte[256]) COLS#23 ← phi( main::@7/(word) 4608 ) - (byte) FILL#10 ← phi( main::@7/(byte) 230 ) - (byte[256]) YPOS#10 ← phi( main::@7/(word) 4352 ) - (byte[256]) XPOS#1 ← phi( main::@7/(word) 4096 ) - (byte*) COLORS#1 ← phi( main::@7/(word) 55296 ) - (byte*) SCREEN#1 ← phi( main::@7/(word) 1024 ) +main::@1: from main::@11 main::@8 + (byte) numpoints#16 ← phi( main::@8/(byte) 6 ) + (byte[256]) COLS#23 ← phi( main::@8/(word) 4608 ) + (byte[256]) YPOS#10 ← phi( main::@8/(word) 4352 ) + (byte[256]) XPOS#1 ← phi( main::@8/(word) 4096 ) + (byte*) COLORS#1 ← phi( main::@8/(word) 55296 ) call render param-assignment - to:main::@9 -main::@9: from main::@1 - call animate param-assignment to:main::@10 -main::@10: from main::@9 +main::@10: from main::@1 + call animate param-assignment + to:main::@11 +main::@11: from main::@10 if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 +animate: from main::@10 (byte~) animate::$0 ← (byte[256]) XPOS#1 *idx (byte) 0 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((byte[256]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 @@ -4537,8 +4632,20 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + (byte*) initscreen::screen#0 ← (word) 1024 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(byte*) initscreen::screen#0 initscreen::@1/(byte*) initscreen::screen#1 ) + (byte) FILL#1 ← phi( initscreen/(byte) 230 ) + *((byte*) initscreen::screen#2) ← (byte) FILL#1 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 - (byte*) render::chrline#0 ← (byte*) SCREEN#1 (byte*) render::colline#0 ← (byte*) COLORS#1 to:render::@1 render::@1: from render render::@3 @@ -4546,8 +4653,6 @@ render::@1: from render render::@3 (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#10 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#1 render::@3/(byte[256]) XPOS#19 ) - (byte*) render::chrline#5 ← phi( render/(byte*) render::chrline#0 render::@3/(byte*) render::chrline#1 ) - (byte) FILL#3 ← phi( render/(byte) FILL#10 render::@3/(byte) FILL#1 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 @@ -4556,8 +4661,6 @@ render::@2: from render::@1 render::@5 (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 ) - (byte*) render::chrline#2 ← phi( render::@1/(byte*) render::chrline#5 ) - (byte) FILL#1 ← phi( render::@1/(byte) FILL#3 ) (byte*) render::colline#2 ← phi( render::@1/(byte*) render::colline#5 ) (byte) render::y#2 ← phi( render::@1/(byte) render::y#4 ) (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) @@ -4568,12 +4671,10 @@ render::@2: from render::@1 render::@5 render::@5: from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) FILL#1 (byte) render::x#1 ← ++ (byte) render::x#2 if((byte) render::x#1<(byte) 40) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 (byte) render::y#1 ← ++ (byte) render::y#2 if((byte) render::y#1<(byte) 25) goto render::@1 @@ -4590,11 +4691,11 @@ findcol::@1: from findcol findcol::@13 (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 ) (byte) findcol::x#1 ← phi( findcol/(byte) findcol::x#0 ) - (byte[256]) YPOS#38 ← phi( findcol/(byte[256]) YPOS#19 ) + (byte[256]) YPOS#39 ← phi( findcol/(byte[256]) YPOS#19 ) (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) - (byte[256]) XPOS#39 ← phi( findcol/(byte[256]) XPOS#19 ) - (byte) findcol::xp#0 ← (byte[256]) XPOS#39 *idx (byte) findcol::i#12 - (byte) findcol::yp#0 ← (byte[256]) YPOS#38 *idx (byte) findcol::i#12 + (byte[256]) XPOS#40 ← phi( findcol/(byte[256]) XPOS#19 ) + (byte) findcol::xp#0 ← (byte[256]) XPOS#40 *idx (byte) findcol::i#12 + (byte) findcol::yp#0 ← (byte[256]) YPOS#39 *idx (byte) findcol::i#12 if((byte) findcol::x#1==(byte) findcol::xp#0) goto findcol::@2 to:findcol::@3 findcol::@2: from findcol::@1 @@ -4640,13 +4741,13 @@ findcol::@13: from findcol::@11 findcol::@12 to:findcol::@return @END: from @BEGIN -Constant (byte*) SCREEN#1 (word) 1024 Constant (byte*) COLORS#1 (word) 55296 Constant (byte[256]) XPOS#1 (word) 4096 Constant (byte[256]) YPOS#10 (word) 4352 -Constant (byte) FILL#10 (byte) 230 Constant (byte[256]) COLS#23 (word) 4608 Constant (byte) numpoints#16 (byte) 6 +Constant (byte*) initscreen::screen#0 (word) 1024 +Constant (byte) FILL#1 (byte) 230 Succesful SSA optimization Pass2ConstantPropagation CONTROL FLOW GRAPH @BEGIN: from @@ -4669,20 +4770,23 @@ main::@6: from main::@5 to:main::@7 main::@7: from main::@6 call addpoint param-assignment + to:main::@8 +main::@8: from main::@7 + call initscreen param-assignment to:main::@1 -main::@1: from main::@10 main::@7 +main::@1: from main::@11 main::@8 call render param-assignment - to:main::@9 -main::@9: from main::@1 - call animate param-assignment to:main::@10 -main::@10: from main::@9 +main::@10: from main::@1 + call animate param-assignment + to:main::@11 +main::@11: from main::@10 if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 +animate: from main::@10 (byte~) animate::$0 ← (word) 4096 *idx (byte) 0 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((word) 4096 + (byte) 0) ← (byte~) animate::$1 @@ -4757,8 +4861,18 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(word) 1024 initscreen::@1/(byte*) initscreen::screen#1 ) + *((byte*) initscreen::screen#2) ← (byte) 230 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 - (byte*) render::chrline#0 ← (word) 1024 (byte*) render::colline#0 ← (word) 55296 to:render::@1 render::@1: from render render::@3 @@ -4766,8 +4880,6 @@ render::@1: from render render::@3 (byte[256]) COLS#21 ← phi( render/(word) 4608 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(word) 4352 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(word) 4096 render::@3/(byte[256]) XPOS#19 ) - (byte*) render::chrline#5 ← phi( render/(byte*) render::chrline#0 render::@3/(byte*) render::chrline#1 ) - (byte) FILL#3 ← phi( render/(byte) 230 render::@3/(byte) FILL#1 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 @@ -4776,8 +4888,6 @@ render::@2: from render::@1 render::@5 (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 ) - (byte*) render::chrline#2 ← phi( render::@1/(byte*) render::chrline#5 ) - (byte) FILL#1 ← phi( render::@1/(byte) FILL#3 ) (byte*) render::colline#2 ← phi( render::@1/(byte*) render::colline#5 ) (byte) render::y#2 ← phi( render::@1/(byte) render::y#4 ) (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) @@ -4788,12 +4898,10 @@ render::@2: from render::@1 render::@5 render::@5: from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) FILL#1 (byte) render::x#1 ← ++ (byte) render::x#2 if((byte) render::x#1<(byte) 40) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 (byte) render::y#1 ← ++ (byte) render::y#2 if((byte) render::y#1<(byte) 25) goto render::@1 @@ -4810,11 +4918,11 @@ findcol::@1: from findcol findcol::@13 (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 ) (byte) findcol::x#1 ← phi( findcol/(byte) findcol::x#0 ) - (byte[256]) YPOS#38 ← phi( findcol/(byte[256]) YPOS#19 ) + (byte[256]) YPOS#39 ← phi( findcol/(byte[256]) YPOS#19 ) (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) - (byte[256]) XPOS#39 ← phi( findcol/(byte[256]) XPOS#19 ) - (byte) findcol::xp#0 ← (byte[256]) XPOS#39 *idx (byte) findcol::i#12 - (byte) findcol::yp#0 ← (byte[256]) YPOS#38 *idx (byte) findcol::i#12 + (byte[256]) XPOS#40 ← phi( findcol/(byte[256]) XPOS#19 ) + (byte) findcol::xp#0 ← (byte[256]) XPOS#40 *idx (byte) findcol::i#12 + (byte) findcol::yp#0 ← (byte[256]) YPOS#39 *idx (byte) findcol::i#12 if((byte) findcol::x#1==(byte) findcol::xp#0) goto findcol::@2 to:findcol::@3 findcol::@2: from findcol::@1 @@ -4907,20 +5015,23 @@ main::@6: from main::@5 to:main::@7 main::@7: from main::@6 call addpoint param-assignment + to:main::@8 +main::@8: from main::@7 + call initscreen param-assignment to:main::@1 -main::@1: from main::@10 main::@7 +main::@1: from main::@11 main::@8 call render param-assignment - to:main::@9 -main::@9: from main::@1 - call animate param-assignment to:main::@10 -main::@10: from main::@9 +main::@10: from main::@1 + call animate param-assignment + to:main::@11 +main::@11: from main::@10 if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 +animate: from main::@10 (byte~) animate::$0 ← * (word) 4096 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((word) 4096) ← (byte~) animate::$1 @@ -4995,8 +5106,18 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(word) 1024 initscreen::@1/(byte*) initscreen::screen#1 ) + *((byte*) initscreen::screen#2) ← (byte) 230 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 - (byte*) render::chrline#0 ← (word) 1024 (byte*) render::colline#0 ← (word) 55296 to:render::@1 render::@1: from render render::@3 @@ -5004,8 +5125,6 @@ render::@1: from render render::@3 (byte[256]) COLS#21 ← phi( render/(word) 4608 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(word) 4352 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(word) 4096 render::@3/(byte[256]) XPOS#19 ) - (byte*) render::chrline#5 ← phi( render/(byte*) render::chrline#0 render::@3/(byte*) render::chrline#1 ) - (byte) FILL#3 ← phi( render/(byte) 230 render::@3/(byte) FILL#1 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 @@ -5014,8 +5133,6 @@ render::@2: from render::@1 render::@5 (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 ) - (byte*) render::chrline#2 ← phi( render::@1/(byte*) render::chrline#5 ) - (byte) FILL#1 ← phi( render::@1/(byte) FILL#3 ) (byte*) render::colline#2 ← phi( render::@1/(byte*) render::colline#5 ) (byte) render::y#2 ← phi( render::@1/(byte) render::y#4 ) (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) @@ -5026,12 +5143,10 @@ render::@2: from render::@1 render::@5 render::@5: from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) FILL#1 (byte) render::x#1 ← ++ (byte) render::x#2 if((byte) render::x#1<(byte) 40) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 (byte) render::y#1 ← ++ (byte) render::y#2 if((byte) render::y#1<(byte) 25) goto render::@1 @@ -5048,11 +5163,11 @@ findcol::@1: from findcol findcol::@13 (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 ) (byte) findcol::x#1 ← phi( findcol/(byte) findcol::x#0 ) - (byte[256]) YPOS#38 ← phi( findcol/(byte[256]) YPOS#19 ) + (byte[256]) YPOS#39 ← phi( findcol/(byte[256]) YPOS#19 ) (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) - (byte[256]) XPOS#39 ← phi( findcol/(byte[256]) XPOS#19 ) - (byte) findcol::xp#0 ← (byte[256]) XPOS#39 *idx (byte) findcol::i#12 - (byte) findcol::yp#0 ← (byte[256]) YPOS#38 *idx (byte) findcol::i#12 + (byte[256]) XPOS#40 ← phi( findcol/(byte[256]) XPOS#19 ) + (byte) findcol::xp#0 ← (byte[256]) XPOS#40 *idx (byte) findcol::i#12 + (byte) findcol::yp#0 ← (byte[256]) YPOS#39 *idx (byte) findcol::i#12 if((byte) findcol::x#1==(byte) findcol::xp#0) goto findcol::@2 to:findcol::@3 findcol::@2: from findcol::@1 @@ -5103,10 +5218,8 @@ Not aliassing across scopes: findcol::y#0 render::y#2 Not aliassing across scopes: render::col#0 findcol::return#0 Alias (byte) render::y#2 = (byte) render::y#4 Alias (byte*) render::colline#2 = (byte*) render::colline#5 -Alias (byte) FILL#1 = (byte) FILL#3 -Alias (byte*) render::chrline#2 = (byte*) render::chrline#5 -Alias (byte[256]) XPOS#19 = (byte[256]) XPOS#29 (byte[256]) XPOS#39 -Alias (byte[256]) YPOS#19 = (byte[256]) YPOS#26 (byte[256]) YPOS#38 +Alias (byte[256]) XPOS#19 = (byte[256]) XPOS#29 (byte[256]) XPOS#40 +Alias (byte[256]) YPOS#19 = (byte[256]) YPOS#26 (byte[256]) YPOS#39 Alias (byte[256]) COLS#16 = (byte[256]) COLS#18 (byte[256]) COLS#21 Alias (byte) numpoints#10 = (byte) numpoints#12 (byte) numpoints#14 Alias (byte) findcol::x#0 = (byte) findcol::x#1 @@ -5133,20 +5246,23 @@ main::@6: from main::@5 to:main::@7 main::@7: from main::@6 call addpoint param-assignment + to:main::@8 +main::@8: from main::@7 + call initscreen param-assignment to:main::@1 -main::@1: from main::@10 main::@7 +main::@1: from main::@11 main::@8 call render param-assignment - to:main::@9 -main::@9: from main::@1 - call animate param-assignment to:main::@10 -main::@10: from main::@9 +main::@10: from main::@1 + call animate param-assignment + to:main::@11 +main::@11: from main::@10 if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 +animate: from main::@10 (byte~) animate::$0 ← * (word) 4096 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((word) 4096) ← (byte~) animate::$1 @@ -5221,8 +5337,18 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(word) 1024 initscreen::@1/(byte*) initscreen::screen#1 ) + *((byte*) initscreen::screen#2) ← (byte) 230 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 - (byte*) render::chrline#0 ← (word) 1024 (byte*) render::colline#0 ← (word) 55296 to:render::@1 render::@1: from render render::@3 @@ -5230,8 +5356,6 @@ render::@1: from render render::@3 (byte[256]) COLS#16 ← phi( render/(word) 4608 render::@3/(byte[256]) COLS#16 ) (byte[256]) YPOS#19 ← phi( render/(word) 4352 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#19 ← phi( render/(word) 4096 render::@3/(byte[256]) XPOS#19 ) - (byte*) render::chrline#2 ← phi( render/(byte*) render::chrline#0 render::@3/(byte*) render::chrline#1 ) - (byte) FILL#1 ← phi( render/(byte) 230 render::@3/(byte) FILL#1 ) (byte*) render::colline#2 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#2 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 @@ -5244,12 +5368,10 @@ render::@2: from render::@1 render::@5 render::@5: from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) FILL#1 (byte) render::x#1 ← ++ (byte) render::x#2 if((byte) render::x#1<(byte) 40) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 (byte) render::y#1 ← ++ (byte) render::y#2 if((byte) render::y#1<(byte) 25) goto render::@1 @@ -5310,7 +5432,6 @@ findcol::@13: from findcol::@11 findcol::@12 to:findcol::@return @END: from @BEGIN -Self Phi Eliminated (byte) FILL#1 Self Phi Eliminated (byte[256]) XPOS#19 Self Phi Eliminated (byte[256]) YPOS#19 Self Phi Eliminated (byte[256]) COLS#16 @@ -5337,20 +5458,23 @@ main::@6: from main::@5 to:main::@7 main::@7: from main::@6 call addpoint param-assignment + to:main::@8 +main::@8: from main::@7 + call initscreen param-assignment to:main::@1 -main::@1: from main::@10 main::@7 +main::@1: from main::@11 main::@8 call render param-assignment - to:main::@9 -main::@9: from main::@1 - call animate param-assignment to:main::@10 -main::@10: from main::@9 +main::@10: from main::@1 + call animate param-assignment + to:main::@11 +main::@11: from main::@10 if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 +animate: from main::@10 (byte~) animate::$0 ← * (word) 4096 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((word) 4096) ← (byte~) animate::$1 @@ -5425,8 +5549,18 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(word) 1024 initscreen::@1/(byte*) initscreen::screen#1 ) + *((byte*) initscreen::screen#2) ← (byte) 230 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 - (byte*) render::chrline#0 ← (word) 1024 (byte*) render::colline#0 ← (word) 55296 to:render::@1 render::@1: from render render::@3 @@ -5434,8 +5568,6 @@ render::@1: from render render::@3 (byte[256]) COLS#16 ← phi( render/(word) 4608 ) (byte[256]) YPOS#19 ← phi( render/(word) 4352 ) (byte[256]) XPOS#19 ← phi( render/(word) 4096 ) - (byte*) render::chrline#2 ← phi( render/(byte*) render::chrline#0 render::@3/(byte*) render::chrline#1 ) - (byte) FILL#1 ← phi( render/(byte) 230 ) (byte*) render::colline#2 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#2 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 @@ -5448,12 +5580,10 @@ render::@2: from render::@1 render::@5 render::@5: from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) FILL#1 (byte) render::x#1 ← ++ (byte) render::x#2 if((byte) render::x#1<(byte) 40) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 (byte) render::y#1 ← ++ (byte) render::y#2 if((byte) render::y#1<(byte) 25) goto render::@1 @@ -5514,9 +5644,7 @@ findcol::@13: from findcol::@11 findcol::@12 to:findcol::@return @END: from @BEGIN -Constant (byte*) render::chrline#0 (word) 1024 Constant (byte*) render::colline#0 (word) 55296 -Constant (byte) FILL#1 (byte) 230 Constant (byte[256]) XPOS#19 (word) 4096 Constant (byte[256]) YPOS#19 (word) 4352 Constant (byte[256]) COLS#16 (word) 4608 @@ -5543,20 +5671,23 @@ main::@6: from main::@5 to:main::@7 main::@7: from main::@6 call addpoint param-assignment + to:main::@8 +main::@8: from main::@7 + call initscreen param-assignment to:main::@1 -main::@1: from main::@10 main::@7 +main::@1: from main::@11 main::@8 call render param-assignment - to:main::@9 -main::@9: from main::@1 - call animate param-assignment to:main::@10 -main::@10: from main::@9 +main::@10: from main::@1 + call animate param-assignment + to:main::@11 +main::@11: from main::@10 if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 +animate: from main::@10 (byte~) animate::$0 ← * (word) 4096 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((word) 4096) ← (byte~) animate::$1 @@ -5631,10 +5762,20 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 addpoint::@return: from addpoint return to:@RETURN +initscreen: from main::@8 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(word) 1024 initscreen::@1/(byte*) initscreen::screen#1 ) + *((byte*) initscreen::screen#2) ← (byte) 230 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN render: from main::@1 to:render::@1 render::@1: from render render::@3 - (byte*) render::chrline#2 ← phi( render/(word) 1024 render::@3/(byte*) render::chrline#1 ) (byte*) render::colline#2 ← phi( render/(word) 55296 render::@3/(byte*) render::colline#1 ) (byte) render::y#2 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 @@ -5647,12 +5788,10 @@ render::@2: from render::@1 render::@5 render::@5: from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) 230 (byte) render::x#1 ← ++ (byte) render::x#2 if((byte) render::x#1<(byte) 40) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 (byte) render::y#1 ← ++ (byte) render::y#2 if((byte) render::y#1<(byte) 25) goto render::@1 @@ -5725,13 +5864,14 @@ Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#12 Not aliassing across scopes: findcol::x#0 render::x#2 Not aliassing across scopes: findcol::y#0 render::y#2 Not aliassing across scopes: render::col#0 findcol::return#0 -Block Sequence Planned @BEGIN @END main main::@3 main::@4 main::@5 main::@6 main::@7 main::@1 main::@9 main::@10 main::@return animate animate::@2 animate::@4 animate::@6 animate::@8 animate::@return animate::@9 animate::@11 animate::@7 animate::@5 animate::@3 animate::@1 render render::@1 render::@2 render::@5 render::@3 render::@return findcol findcol::@1 findcol::@3 findcol::@7 findcol::@8 findcol::@10 findcol::@11 findcol::@13 findcol::@return findcol::@12 findcol::@9 findcol::@6 findcol::@2 addpoint addpoint::@return +Block Sequence Planned @BEGIN @END main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@1 main::@10 main::@11 main::@return animate animate::@2 animate::@4 animate::@6 animate::@8 animate::@return animate::@9 animate::@11 animate::@7 animate::@5 animate::@3 animate::@1 render render::@1 render::@2 render::@5 render::@3 render::@return findcol findcol::@1 findcol::@3 findcol::@7 findcol::@8 findcol::@10 findcol::@11 findcol::@13 findcol::@return findcol::@12 findcol::@9 findcol::@6 findcol::@2 initscreen initscreen::@1 initscreen::@return addpoint addpoint::@return Added new block during phi lifting render::@6(between render::@3 and render::@1) Added new block during phi lifting render::@7(between render::@5 and render::@2) Added new block during phi lifting findcol::@29(between findcol::@13 and findcol::@1) Added new block during phi lifting findcol::@30(between findcol::@11 and findcol::@13) Added new block during phi lifting findcol::@31(between findcol::@13 and findcol::@return) -Block Sequence Planned @BEGIN @END main main::@3 main::@4 main::@5 main::@6 main::@7 main::@1 main::@9 main::@10 main::@return animate animate::@2 animate::@4 animate::@6 animate::@8 animate::@return animate::@9 animate::@11 animate::@7 animate::@5 animate::@3 animate::@1 render render::@1 render::@2 render::@5 render::@3 render::@return render::@6 render::@7 findcol findcol::@1 findcol::@3 findcol::@7 findcol::@8 findcol::@10 findcol::@11 findcol::@30 findcol::@13 findcol::@31 findcol::@return findcol::@29 findcol::@12 findcol::@9 findcol::@6 findcol::@2 addpoint addpoint::@return +Added new block during phi lifting initscreen::@3(between initscreen::@1 and initscreen::@1) +Block Sequence Planned @BEGIN @END main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@1 main::@10 main::@11 main::@return animate animate::@2 animate::@4 animate::@6 animate::@8 animate::@return animate::@9 animate::@11 animate::@7 animate::@5 animate::@3 animate::@1 render render::@1 render::@2 render::@5 render::@3 render::@return render::@6 render::@7 findcol findcol::@1 findcol::@3 findcol::@7 findcol::@8 findcol::@10 findcol::@11 findcol::@30 findcol::@13 findcol::@31 findcol::@return findcol::@29 findcol::@12 findcol::@9 findcol::@6 findcol::@2 initscreen initscreen::@1 initscreen::@return initscreen::@3 addpoint addpoint::@return CONTROL FLOW GRAPH - PHI LIFTED @BEGIN: from call main param-assignment @@ -5754,20 +5894,23 @@ main::@6: from main::@5 to:main::@7 main::@7: from main::@6 call addpoint param-assignment + to:main::@8 +main::@8: from main::@7 + call initscreen param-assignment to:main::@1 -main::@1: from main::@10 main::@7 +main::@1: from main::@11 main::@8 call render param-assignment - to:main::@9 -main::@9: from main::@1 - call animate param-assignment to:main::@10 -main::@10: from main::@9 +main::@10: from main::@1 + call animate param-assignment + to:main::@11 +main::@11: from main::@10 if(true) goto main::@1 to:main::@return -main::@return: from main::@10 +main::@return: from main::@11 return to:@RETURN -animate: from main::@9 +animate: from main::@10 (byte~) animate::$0 ← * (word) 4096 (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 *((word) 4096) ← (byte~) animate::$1 @@ -5833,7 +5976,6 @@ animate::@1: from animate render: from main::@1 to:render::@1 render::@1: from render render::@6 - (byte*) render::chrline#2 ← phi( render/(word) 1024 render::@6/(byte*~) render::chrline#6 ) (byte*) render::colline#2 ← phi( render/(word) 55296 render::@6/(byte*~) render::colline#6 ) (byte) render::y#2 ← phi( render/(byte) 0 render::@6/(byte~) render::y#6 ) to:render::@2 @@ -5846,12 +5988,10 @@ render::@2: from render::@1 render::@7 render::@5: from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 - *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) 230 (byte) render::x#1 ← ++ (byte) render::x#2 if((byte) render::x#1<(byte) 40) goto render::@7 to:render::@3 render::@3: from render::@5 - (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 (byte) render::y#1 ← ++ (byte) render::y#2 if((byte) render::y#1<(byte) 25) goto render::@6 @@ -5862,7 +6002,6 @@ render::@return: from render::@3 render::@6: from render::@3 (byte~) render::y#6 ← (byte) render::y#1 (byte*~) render::colline#6 ← (byte*) render::colline#1 - (byte*~) render::chrline#6 ← (byte*) render::chrline#1 to:render::@1 render::@7: from render::@5 (byte~) render::x#4 ← (byte) render::x#1 @@ -5936,6 +6075,20 @@ findcol::@6: from findcol::@3 findcol::@2: from findcol::@1 if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return to:findcol::@3 +initscreen: from main::@8 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@3 + (byte*) initscreen::screen#2 ← phi( initscreen/(word) 1024 initscreen::@3/(byte*~) initscreen::screen#3 ) + *((byte*) initscreen::screen#2) ← (byte) 230 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@3 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN +initscreen::@3: from initscreen::@1 + (byte*~) initscreen::screen#3 ← (byte*) initscreen::screen#1 + to:initscreen::@1 addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) @@ -6003,225 +6156,239 @@ main::@6: from main::@5 to:main::@7 main::@7: from main::@6 [6] call addpoint param-assignment [ findcol::return#0 ] + to:main::@8 +main::@8: from main::@7 + [7] call initscreen param-assignment [ findcol::return#0 ] to:main::@1 -main::@1: from main::@10 main::@7 - [7] call render param-assignment [ findcol::return#0 ] - to:main::@9 -main::@9: from main::@1 - [8] call animate param-assignment [ findcol::return#0 ] +main::@1: from main::@11 main::@8 + [8] call render param-assignment [ findcol::return#0 ] to:main::@10 -main::@10: from main::@9 - [9] if(true) goto main::@1 [ findcol::return#0 ] +main::@10: from main::@1 + [9] call animate param-assignment [ findcol::return#0 ] + to:main::@11 +main::@11: from main::@10 + [10] if(true) goto main::@1 [ findcol::return#0 ] to:main::@return -main::@return: from main::@10 - [10] return [ findcol::return#0 ] +main::@return: from main::@11 + [11] return [ findcol::return#0 ] to:@RETURN -animate: from main::@9 - [11] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] - [12] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] - [13] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] - [14] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] - [15] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] +animate: from main::@10 + [12] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] + [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] + [14] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] + [15] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] + [16] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] to:animate::@2 animate::@2: from animate animate::@1 - [16] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] - [17] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] - [18] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] - [19] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] - [20] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] + [17] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] + [18] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] + [19] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] + [20] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] + [21] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] to:animate::@4 animate::@4: from animate::@2 animate::@3 - [21] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] - [22] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] - [23] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] - [24] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] - [25] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] + [22] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] + [23] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] + [24] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] + [25] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] + [26] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] to:animate::@6 animate::@6: from animate::@4 animate::@5 - [26] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] - [27] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] - [28] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] - [29] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] - [30] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] + [27] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] + [28] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] + [29] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] + [30] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] + [31] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] to:animate::@8 animate::@8: from animate::@6 animate::@7 - [31] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] - [32] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] - [33] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] - [34] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] - [35] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] + [32] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] + [33] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] + [34] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] + [35] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] + [36] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] to:animate::@return animate::@return: from animate::@11 animate::@8 animate::@9 - [36] return [ findcol::return#0 ] + [37] return [ findcol::return#0 ] to:@RETURN animate::@9: from animate::@8 - [37] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] - [38] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] - [39] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] - [40] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] - [41] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] - [42] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] + [38] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] + [39] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] + [40] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] + [41] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] + [42] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] + [43] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] to:animate::@return animate::@11: from animate::@9 - [43] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] - [44] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] - [45] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] + [44] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] + [45] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] + [46] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] to:animate::@return animate::@7: from animate::@6 - [46] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] + [47] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] to:animate::@8 animate::@5: from animate::@4 - [47] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] + [48] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] to:animate::@6 animate::@3: from animate::@2 - [48] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] + [49] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] to:animate::@4 animate::@1: from animate - [49] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] + [50] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] to:animate::@2 render: from main::@1 to:render::@1 render::@1: from render render::@6 - [50] (byte*) render::chrline#2 ← phi( render/(word) 1024 render::@6/(byte*~) render::chrline#6 ) [ render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [50] (byte*) render::colline#2 ← phi( render/(word) 55296 render::@6/(byte*~) render::colline#6 ) [ render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [50] (byte) render::y#2 ← phi( render/(byte) 0 render::@6/(byte~) render::y#6 ) [ render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] + [51] (byte*) render::colline#2 ← phi( render/(word) 55296 render::@6/(byte*~) render::colline#6 ) [ render::y#2 findcol::return#0 render::colline#2 ] + [51] (byte) render::y#2 ← phi( render/(byte) 0 render::@6/(byte~) render::y#6 ) [ render::y#2 findcol::return#0 render::colline#2 ] to:render::@2 render::@2: from render::@1 render::@7 - [51] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@7/(byte~) render::x#4 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [52] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 ] - [53] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] - [54] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] + [52] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@7/(byte~) render::x#4 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] + [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 ] + [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] + [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] to:render::@5 render::@5: from render::@2 - [55] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 render::chrline#2 ] - [56] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [57] *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) 230 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#2 findcol::return#0 render::colline#2 render::chrline#2 render::x#1 ] - [59] if((byte) render::x#1<(byte) 40) goto render::@7 [ render::y#2 findcol::return#0 render::colline#2 render::chrline#2 render::x#1 ] + [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 ] + [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] + [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#2 findcol::return#0 render::colline#2 render::x#1 ] + [59] if((byte) render::x#1<(byte) 40) goto render::@7 [ render::y#2 findcol::return#0 render::colline#2 render::x#1 ] to:render::@3 render::@3: from render::@5 - [60] (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 [ render::y#2 findcol::return#0 render::colline#2 render::chrline#1 ] - [61] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::y#2 findcol::return#0 render::colline#1 render::chrline#1 ] - [62] (byte) render::y#1 ← ++ (byte) render::y#2 [ findcol::return#0 render::y#1 render::colline#1 render::chrline#1 ] - [63] if((byte) render::y#1<(byte) 25) goto render::@6 [ findcol::return#0 render::y#1 render::colline#1 render::chrline#1 ] + [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::y#2 findcol::return#0 render::colline#1 ] + [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ findcol::return#0 render::y#1 render::colline#1 ] + [62] if((byte) render::y#1<(byte) 25) goto render::@6 [ findcol::return#0 render::y#1 render::colline#1 ] to:render::@return render::@return: from render::@3 - [64] return [ findcol::return#0 ] + [63] return [ findcol::return#0 ] to:@RETURN render::@6: from render::@3 - [65] (byte~) render::y#6 ← (byte) render::y#1 [ render::y#6 findcol::return#0 render::colline#1 render::chrline#1 ] - [66] (byte*~) render::colline#6 ← (byte*) render::colline#1 [ render::y#6 render::colline#6 findcol::return#0 render::chrline#1 ] - [67] (byte*~) render::chrline#6 ← (byte*) render::chrline#1 [ render::y#6 render::colline#6 render::chrline#6 findcol::return#0 ] + [64] (byte~) render::y#6 ← (byte) render::y#1 [ render::y#6 findcol::return#0 render::colline#1 ] + [65] (byte*~) render::colline#6 ← (byte*) render::colline#1 [ render::y#6 render::colline#6 findcol::return#0 ] to:render::@1 render::@7: from render::@5 - [68] (byte~) render::x#4 ← (byte) render::x#1 [ render::x#4 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] + [66] (byte~) render::x#4 ← (byte) render::x#1 [ render::x#4 render::y#2 findcol::return#0 render::colline#2 ] to:render::@2 findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@29 - [69] (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@29/(byte~) findcol::mincol#13 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [69] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@29/(byte~) findcol::mindiff#12 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [69] (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@29/(byte~) findcol::i#13 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [70] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [71] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] - [72] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [67] (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@29/(byte~) findcol::mincol#13 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [67] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@29/(byte~) findcol::mindiff#12 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [67] (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@29/(byte~) findcol::i#13 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [68] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [69] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [70] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@3 findcol::@3: from findcol::@1 findcol::@2 - [73] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [71] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@7 findcol::@7: from findcol::@3 - [74] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] - [75] (byte~) findcol::diff#10 ← (byte) findcol::diff#1 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#10 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [72] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [73] (byte~) findcol::diff#10 ← (byte) findcol::diff#1 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#10 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@8 findcol::@8: from findcol::@6 findcol::@7 - [76] (byte) findcol::diff#4 ← phi( findcol::@6/(byte~) findcol::diff#9 findcol::@7/(byte~) findcol::diff#10 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] - [77] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] + [74] (byte) findcol::diff#4 ← phi( findcol::@6/(byte~) findcol::diff#9 findcol::@7/(byte~) findcol::diff#10 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] + [75] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@10 findcol::@10: from findcol::@8 - [78] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] - [79] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] - [80] (byte~) findcol::diff#11 ← (byte) findcol::diff#3 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#11 findcol::mindiff#10 findcol::mincol#11 ] + [76] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] + [77] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] + [78] (byte~) findcol::diff#11 ← (byte) findcol::diff#3 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#11 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@11 findcol::@11: from findcol::@10 findcol::@9 - [81] (byte) findcol::diff#6 ← phi( findcol::@10/(byte~) findcol::diff#11 findcol::@9/(byte~) findcol::diff#12 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] - [82] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] + [79] (byte) findcol::diff#6 ← phi( findcol::@10/(byte~) findcol::diff#11 findcol::@9/(byte~) findcol::diff#12 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] + [80] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@30 findcol::@30: from findcol::@11 - [83] (byte~) findcol::mincol#14 ← (byte) findcol::mincol#11 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#14 ] - [84] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#10 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#14 findcol::mindiff#13 ] + [81] (byte~) findcol::mincol#14 ← (byte) findcol::mincol#11 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#14 ] + [82] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#14 findcol::mindiff#13 ] to:findcol::@13 findcol::@13: from findcol::@12 findcol::@30 - [85] (byte) findcol::mindiff#11 ← phi( findcol::@30/(byte~) findcol::mindiff#13 findcol::@12/(byte~) findcol::diff#13 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 ] - [85] (byte) findcol::mincol#2 ← phi( findcol::@30/(byte~) findcol::mincol#14 findcol::@12/(byte~) findcol::mincol#15 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 ] - [86] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] - [87] if((byte) findcol::i#1<(byte) 6) goto findcol::@29 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] + [83] (byte) findcol::mindiff#11 ← phi( findcol::@30/(byte~) findcol::mindiff#13 findcol::@12/(byte~) findcol::diff#13 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 ] + [83] (byte) findcol::mincol#2 ← phi( findcol::@30/(byte~) findcol::mincol#14 findcol::@12/(byte~) findcol::mincol#15 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 ] + [84] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] + [85] if((byte) findcol::i#1<(byte) 6) goto findcol::@29 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] to:findcol::@31 findcol::@31: from findcol::@13 - [88] (byte~) findcol::mincol#16 ← (byte) findcol::mincol#2 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 findcol::mincol#16 ] + [86] (byte~) findcol::mincol#16 ← (byte) findcol::mincol#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 findcol::mincol#16 ] to:findcol::@return findcol::@return: from findcol::@2 findcol::@31 - [89] (byte) findcol::return#0 ← phi( findcol::@31/(byte~) findcol::mincol#16 findcol::@2/(byte) 0 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] - [90] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] + [87] (byte) findcol::return#0 ← phi( findcol::@31/(byte~) findcol::mincol#16 findcol::@2/(byte) 0 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] + [88] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] to:@RETURN findcol::@29: from findcol::@13 - [91] (byte~) findcol::i#13 ← (byte) findcol::i#1 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#13 findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 ] - [92] (byte~) findcol::mindiff#12 ← (byte) findcol::mindiff#11 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#13 findcol::mindiff#12 findcol::x#0 findcol::y#0 findcol::mincol#2 ] - [93] (byte~) findcol::mincol#13 ← (byte) findcol::mincol#2 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#13 findcol::mindiff#12 findcol::mincol#13 findcol::x#0 findcol::y#0 ] + [89] (byte~) findcol::i#13 ← (byte) findcol::i#1 [ render::x#2 render::y#2 render::colline#2 findcol::i#13 findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 ] + [90] (byte~) findcol::mindiff#12 ← (byte) findcol::mindiff#11 [ render::x#2 render::y#2 render::colline#2 findcol::i#13 findcol::mindiff#12 findcol::x#0 findcol::y#0 findcol::mincol#2 ] + [91] (byte~) findcol::mincol#13 ← (byte) findcol::mincol#2 [ render::x#2 render::y#2 render::colline#2 findcol::i#13 findcol::mindiff#12 findcol::mincol#13 findcol::x#0 findcol::y#0 ] to:findcol::@1 findcol::@12: from findcol::@11 - [94] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] - [95] (byte~) findcol::mincol#15 ← (byte) findcol::mincol#1 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#15 ] - [96] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#15 findcol::diff#13 ] + [92] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] + [93] (byte~) findcol::mincol#15 ← (byte) findcol::mincol#1 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#15 ] + [94] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#15 findcol::diff#13 ] to:findcol::@13 findcol::@9: from findcol::@8 - [97] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] - [98] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 findcol::diff#2 ] - [99] (byte~) findcol::diff#12 ← (byte) findcol::diff#2 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#12 findcol::mindiff#10 findcol::mincol#11 ] + [95] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] + [96] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 findcol::diff#2 ] + [97] (byte~) findcol::diff#12 ← (byte) findcol::diff#2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#12 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@11 findcol::@6: from findcol::@3 - [100] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 findcol::diff#0 ] - [101] (byte~) findcol::diff#9 ← (byte) findcol::diff#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#9 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [98] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 findcol::diff#0 ] + [99] (byte~) findcol::diff#9 ← (byte) findcol::diff#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#9 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@8 findcol::@2: from findcol::@1 - [102] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [100] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@3 +initscreen: from main::@8 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@3 + [101] (byte*) initscreen::screen#2 ← phi( initscreen/(word) 1024 initscreen::@3/(byte*~) initscreen::screen#3 ) [ findcol::return#0 initscreen::screen#2 ] + [102] *((byte*) initscreen::screen#2) ← (byte) 230 [ findcol::return#0 initscreen::screen#2 ] + [103] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ findcol::return#0 initscreen::screen#1 ] + [104] if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@3 [ findcol::return#0 initscreen::screen#1 ] + to:initscreen::@return +initscreen::@return: from initscreen::@1 + [105] return [ findcol::return#0 ] + to:@RETURN +initscreen::@3: from initscreen::@1 + [106] (byte*~) initscreen::screen#3 ← (byte*) initscreen::screen#1 [ findcol::return#0 initscreen::screen#3 ] + to:initscreen::@1 addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 - [103] (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [103] (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [103] (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [103] (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [104] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] - [105] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] - [106] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] + [107] (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [107] (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [107] (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [107] (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [108] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] + [109] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] + [110] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] to:addpoint::@return addpoint::@return: from addpoint - [107] return [ findcol::return#0 ] + [111] return [ findcol::return#0 ] to:@RETURN Created 16 initial phi equivalence classes -Coalesced [65] render::y#6 ← render::y#1 -Coalesced [66] render::colline#6 ← render::colline#1 -Coalesced [67] render::chrline#6 ← render::chrline#1 -Coalesced [68] render::x#4 ← render::x#1 -Coalesced [75] findcol::diff#10 ← findcol::diff#1 -Coalesced [80] findcol::diff#11 ← findcol::diff#3 -Coalesced [83] findcol::mincol#14 ← findcol::mincol#11 -Coalesced [84] findcol::mindiff#13 ← findcol::mindiff#10 -Coalesced [88] findcol::mincol#16 ← findcol::mincol#2 -Coalesced [91] findcol::i#13 ← findcol::i#1 -Coalesced (already) [92] findcol::mindiff#12 ← findcol::mindiff#11 -Coalesced (already) [93] findcol::mincol#13 ← findcol::mincol#2 -Coalesced [95] findcol::mincol#15 ← findcol::mincol#1 -Not coalescing [96] findcol::diff#13 ← findcol::diff#6 -Coalesced [99] findcol::diff#12 ← findcol::diff#2 -Coalesced [101] findcol::diff#9 ← findcol::diff#0 +Coalesced [64] render::y#6 ← render::y#1 +Coalesced [65] render::colline#6 ← render::colline#1 +Coalesced [66] render::x#4 ← render::x#1 +Coalesced [73] findcol::diff#10 ← findcol::diff#1 +Coalesced [78] findcol::diff#11 ← findcol::diff#3 +Coalesced [81] findcol::mincol#14 ← findcol::mincol#11 +Coalesced [82] findcol::mindiff#13 ← findcol::mindiff#10 +Coalesced [86] findcol::mincol#16 ← findcol::mincol#2 +Coalesced [89] findcol::i#13 ← findcol::i#1 +Coalesced (already) [90] findcol::mindiff#12 ← findcol::mindiff#11 +Coalesced (already) [91] findcol::mincol#13 ← findcol::mincol#2 +Coalesced [93] findcol::mincol#15 ← findcol::mincol#1 +Not coalescing [94] findcol::diff#13 ← findcol::diff#6 +Coalesced [97] findcol::diff#12 ← findcol::diff#2 +Coalesced [99] findcol::diff#9 ← findcol::diff#0 +Coalesced [106] initscreen::screen#3 ← initscreen::screen#1 Coalesced down to 13 phi equivalence classes Culled Empty Block (label) render::@6 Culled Empty Block (label) render::@7 Culled Empty Block (label) findcol::@30 Culled Empty Block (label) findcol::@31 Culled Empty Block (label) findcol::@29 -Block Sequence Planned @BEGIN @END main main::@3 main::@4 main::@5 main::@6 main::@7 main::@1 main::@9 main::@10 main::@return animate animate::@2 animate::@4 animate::@6 animate::@8 animate::@return animate::@9 animate::@11 animate::@7 animate::@5 animate::@3 animate::@1 render render::@1 render::@2 render::@5 render::@3 render::@return findcol findcol::@1 findcol::@3 findcol::@7 findcol::@8 findcol::@10 findcol::@11 findcol::@13 findcol::@return findcol::@12 findcol::@9 findcol::@6 findcol::@2 addpoint addpoint::@return +Culled Empty Block (label) initscreen::@3 +Block Sequence Planned @BEGIN @END main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@1 main::@10 main::@11 main::@return animate animate::@2 animate::@4 animate::@6 animate::@8 animate::@return animate::@9 animate::@11 animate::@7 animate::@5 animate::@3 animate::@1 render render::@1 render::@2 render::@5 render::@3 render::@return findcol findcol::@1 findcol::@3 findcol::@7 findcol::@8 findcol::@10 findcol::@11 findcol::@13 findcol::@return findcol::@12 findcol::@9 findcol::@6 findcol::@2 initscreen initscreen::@1 initscreen::@return addpoint addpoint::@return Propagating live ranges... Propagating live ranges... Propagating live ranges... @@ -6276,180 +6443,191 @@ main::@6: from main::@5 to:main::@7 main::@7: from main::@6 [6] call addpoint param-assignment [ findcol::return#0 ] + to:main::@8 +main::@8: from main::@7 + [7] call initscreen param-assignment [ findcol::return#0 ] to:main::@1 -main::@1: from main::@10 main::@7 - [7] call render param-assignment [ findcol::return#0 ] - to:main::@9 -main::@9: from main::@1 - [8] call animate param-assignment [ findcol::return#0 ] +main::@1: from main::@11 main::@8 + [8] call render param-assignment [ findcol::return#0 ] to:main::@10 -main::@10: from main::@9 - [9] if(true) goto main::@1 [ findcol::return#0 ] +main::@10: from main::@1 + [9] call animate param-assignment [ findcol::return#0 ] + to:main::@11 +main::@11: from main::@10 + [10] if(true) goto main::@1 [ findcol::return#0 ] to:main::@return -main::@return: from main::@10 - [10] return [ findcol::return#0 ] +main::@return: from main::@11 + [11] return [ findcol::return#0 ] to:@RETURN -animate: from main::@9 - [11] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] - [12] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] - [13] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] - [14] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] - [15] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] +animate: from main::@10 + [12] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] + [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] + [14] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] + [15] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] + [16] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] to:animate::@2 animate::@2: from animate animate::@1 - [16] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] - [17] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] - [18] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] - [19] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] - [20] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] + [17] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] + [18] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] + [19] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] + [20] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] + [21] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] to:animate::@4 animate::@4: from animate::@2 animate::@3 - [21] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] - [22] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] - [23] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] - [24] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] - [25] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] + [22] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] + [23] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] + [24] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] + [25] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] + [26] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] to:animate::@6 animate::@6: from animate::@4 animate::@5 - [26] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] - [27] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] - [28] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] - [29] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] - [30] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] + [27] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] + [28] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] + [29] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] + [30] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] + [31] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] to:animate::@8 animate::@8: from animate::@6 animate::@7 - [31] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] - [32] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] - [33] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] - [34] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] - [35] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] + [32] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] + [33] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] + [34] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] + [35] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] + [36] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] to:animate::@return animate::@return: from animate::@11 animate::@8 animate::@9 - [36] return [ findcol::return#0 ] + [37] return [ findcol::return#0 ] to:@RETURN animate::@9: from animate::@8 - [37] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] - [38] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] - [39] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] - [40] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] - [41] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] - [42] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] + [38] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] + [39] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] + [40] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] + [41] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] + [42] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] + [43] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] to:animate::@return animate::@11: from animate::@9 - [43] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] - [44] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] - [45] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] + [44] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] + [45] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] + [46] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] to:animate::@return animate::@7: from animate::@6 - [46] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] + [47] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] to:animate::@8 animate::@5: from animate::@4 - [47] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] + [48] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] to:animate::@6 animate::@3: from animate::@2 - [48] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] + [49] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] to:animate::@4 animate::@1: from animate - [49] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] + [50] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] to:animate::@2 render: from main::@1 to:render::@1 render::@1: from render render::@3 - [50] (byte*) render::chrline#2 ← phi( render/(word) 1024 render::@3/(byte*) render::chrline#1 ) [ render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [50] (byte*) render::colline#2 ← phi( render/(word) 55296 render::@3/(byte*) render::colline#1 ) [ render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [50] (byte) render::y#2 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) [ render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] + [51] (byte*) render::colline#2 ← phi( render/(word) 55296 render::@3/(byte*) render::colline#1 ) [ render::y#2 findcol::return#0 render::colline#2 ] + [51] (byte) render::y#2 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) [ render::y#2 findcol::return#0 render::colline#2 ] to:render::@2 render::@2: from render::@1 render::@5 - [51] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [52] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 ] - [53] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] - [54] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] + [52] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] + [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 ] + [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] + [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] to:render::@5 render::@5: from render::@2 - [55] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 render::chrline#2 ] - [56] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [57] *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) 230 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] - [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] + [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 ] + [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] + [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 ] + [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 ] to:render::@3 render::@3: from render::@5 - [60] (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 [ render::chrline#1 render::y#2 findcol::return#0 render::colline#2 ] - [61] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::chrline#1 render::y#2 findcol::return#0 ] - [62] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 render::chrline#1 findcol::return#0 ] - [63] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 render::chrline#1 findcol::return#0 ] + [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 findcol::return#0 ] + [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 findcol::return#0 ] + [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 findcol::return#0 ] to:render::@return render::@return: from render::@3 - [64] return [ findcol::return#0 ] + [63] return [ findcol::return#0 ] to:@RETURN findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 - [65] (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [65] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [65] (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [66] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [67] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] - [68] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [64] (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [64] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [64] (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@3 findcol::@3: from findcol::@1 findcol::@2 - [69] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@7 findcol::@7: from findcol::@3 - [70] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@8 findcol::@8: from findcol::@6 findcol::@7 - [71] (byte) findcol::diff#4 ← phi( findcol::@6/(byte) findcol::diff#0 findcol::@7/(byte) findcol::diff#1 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] - [72] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] + [70] (byte) findcol::diff#4 ← phi( findcol::@6/(byte) findcol::diff#0 findcol::@7/(byte) findcol::diff#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] + [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@10 findcol::@10: from findcol::@8 - [73] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] - [74] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] + [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] + [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@11 findcol::@11: from findcol::@10 findcol::@9 - [75] (byte) findcol::diff#6 ← phi( findcol::@10/(byte) findcol::diff#3 findcol::@9/(byte) findcol::diff#2 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] - [76] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] + [74] (byte) findcol::diff#6 ← phi( findcol::@10/(byte) findcol::diff#3 findcol::@9/(byte) findcol::diff#2 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] + [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@13 findcol::@13: from findcol::@11 findcol::@12 - [77] (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte~) findcol::diff#13 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 ] - [77] (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 ] - [78] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] - [79] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] + [76] (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte~) findcol::diff#13 ) [ render::x#2 render::y#2 render::colline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 ] + [76] (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 ] + [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] + [78] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] to:findcol::@return findcol::@return: from findcol::@13 findcol::@2 - [80] (byte) findcol::return#0 ← phi( findcol::@13/(byte) findcol::mincol#2 findcol::@2/(byte) 0 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] - [81] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] + [79] (byte) findcol::return#0 ← phi( findcol::@13/(byte) findcol::mincol#2 findcol::@2/(byte) 0 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] + [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] to:@RETURN findcol::@12: from findcol::@11 - [82] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] - [83] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] + [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] + [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] to:findcol::@13 findcol::@9: from findcol::@8 - [84] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] - [85] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] + [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] + [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@11 findcol::@6: from findcol::@3 - [86] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@8 findcol::@2: from findcol::@1 - [87] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@3 +initscreen: from main::@8 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + [87] (byte*) initscreen::screen#2 ← phi( initscreen/(word) 1024 initscreen::@1/(byte*) initscreen::screen#1 ) [ findcol::return#0 initscreen::screen#2 ] + [88] *((byte*) initscreen::screen#2) ← (byte) 230 [ findcol::return#0 initscreen::screen#2 ] + [89] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ findcol::return#0 initscreen::screen#1 ] + [90] if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 [ findcol::return#0 initscreen::screen#1 ] + to:initscreen::@return +initscreen::@return: from initscreen::@1 + [91] return [ findcol::return#0 ] + to:@RETURN addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 - [88] (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [88] (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [88] (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [88] (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [89] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] - [90] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] - [91] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] + [92] (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [92] (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [92] (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [92] (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) [ findcol::return#0 addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [93] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] + [94] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] + [95] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] to:addpoint::@return addpoint::@return: from addpoint - [92] return [ findcol::return#0 ] + [96] return [ findcol::return#0 ] to:@RETURN CALL GRAPH Calls in [] to 0:main -Calls in [main] to 1:addpoint 2:addpoint 3:addpoint 4:addpoint 5:addpoint 6:addpoint 7:render 8:animate -Calls in [render] to 54:findcol +Calls in [main] to 1:addpoint 2:addpoint 3:addpoint 4:addpoint 5:addpoint 6:addpoint 7:initscreen 8:render 9:animate +Calls in [render] to 55:findcol DOMINATORS @BEGIN dominated by @BEGIN @@ -6460,62 +6638,71 @@ main::@4 dominated by @BEGIN main::@4 main::@3 main main::@5 dominated by @BEGIN main::@4 main::@3 main::@5 main main::@6 dominated by @BEGIN main::@4 main::@3 main::@6 main::@5 main main::@7 dominated by @BEGIN main::@4 main::@3 main::@6 main::@5 main::@7 main -main::@1 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main -main::@9 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 main -main::@10 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 main main::@10 -main::@return dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 main main::@return main::@10 -animate dominated by @BEGIN animate main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 main -animate::@2 dominated by @BEGIN animate main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 animate::@2 main -animate::@4 dominated by @BEGIN animate main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 animate::@4 animate::@2 main -animate::@6 dominated by @BEGIN animate main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 animate::@6 animate::@4 animate::@2 main -animate::@8 dominated by @BEGIN animate main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 animate::@6 animate::@4 animate::@2 animate::@8 main -animate::@return dominated by @BEGIN animate animate::@return main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 animate::@6 animate::@4 animate::@2 main animate::@8 -animate::@9 dominated by @BEGIN animate main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 animate::@6 animate::@4 animate::@2 animate::@9 main animate::@8 -animate::@11 dominated by @BEGIN animate main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 animate::@11 animate::@6 animate::@4 animate::@2 animate::@9 main animate::@8 -animate::@7 dominated by @BEGIN animate main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 animate::@6 animate::@4 animate::@2 animate::@7 main -animate::@5 dominated by @BEGIN animate main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 animate::@5 animate::@4 animate::@2 main -animate::@3 dominated by @BEGIN animate main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 animate::@3 animate::@2 main -animate::@1 dominated by @BEGIN animate main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@9 animate::@1 main -render dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 render main -render::@1 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 render::@1 render main -render::@2 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 render::@2 render::@1 render main -render::@5 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 render::@2 render::@5 render::@1 render main -render::@3 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 render::@3 render::@2 render::@5 render::@1 render main -render::@return dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 render::@3 render::@2 render::@5 render::@return render::@1 render main -findcol dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 findcol render::@2 render::@1 render main -findcol::@1 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 findcol::@1 findcol render::@2 render::@1 render main -findcol::@3 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 findcol::@3 findcol::@1 findcol render::@2 render::@1 render main -findcol::@7 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 findcol::@7 findcol::@3 findcol::@1 findcol render::@2 render::@1 render main -findcol::@8 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 findcol::@8 main::@7 findcol::@3 findcol::@1 findcol render::@2 render::@1 render main -findcol::@10 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 findcol::@8 main::@7 findcol::@3 findcol::@1 findcol::@10 findcol render::@2 render::@1 render main -findcol::@11 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 findcol::@8 main::@7 findcol::@3 findcol::@1 findcol::@11 findcol render::@2 render::@1 render main -findcol::@13 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 findcol::@8 main::@7 findcol::@3 findcol::@1 findcol::@13 findcol::@11 findcol render::@2 render::@1 render main -findcol::@return dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 findcol::@1 findcol render::@2 findcol::@return render::@1 render main -findcol::@12 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 findcol::@8 main::@7 findcol::@3 findcol::@1 findcol::@12 findcol::@11 findcol render::@2 render::@1 render main -findcol::@9 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 findcol::@8 main::@7 findcol::@3 findcol::@1 findcol render::@2 findcol::@9 render::@1 render main -findcol::@6 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 findcol::@6 findcol::@3 findcol::@1 findcol render::@2 render::@1 render main -findcol::@2 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 findcol::@2 findcol::@1 findcol render::@2 render::@1 render main +main::@8 dominated by @BEGIN main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +main::@1 dominated by @BEGIN main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +main::@10 dominated by @BEGIN main::@10 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +main::@11 dominated by @BEGIN main::@10 main::@11 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +main::@return dominated by @BEGIN main::@return main::@10 main::@11 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +animate dominated by @BEGIN animate main::@10 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +animate::@2 dominated by @BEGIN animate animate::@2 main::@10 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +animate::@4 dominated by @BEGIN animate animate::@4 animate::@2 main::@10 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +animate::@6 dominated by @BEGIN animate animate::@6 animate::@4 animate::@2 main::@10 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +animate::@8 dominated by @BEGIN animate animate::@6 animate::@4 animate::@2 animate::@8 main::@10 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +animate::@return dominated by @BEGIN animate animate::@return animate::@6 animate::@4 animate::@2 animate::@8 main::@10 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +animate::@9 dominated by @BEGIN animate animate::@6 animate::@4 animate::@2 animate::@9 animate::@8 main::@10 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +animate::@11 dominated by @BEGIN animate animate::@11 animate::@6 animate::@4 animate::@2 animate::@9 animate::@8 main::@10 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +animate::@7 dominated by @BEGIN animate animate::@6 animate::@4 animate::@2 animate::@7 main::@10 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +animate::@5 dominated by @BEGIN animate animate::@5 animate::@4 animate::@2 main::@10 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +animate::@3 dominated by @BEGIN animate animate::@3 animate::@2 main::@10 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +animate::@1 dominated by @BEGIN animate animate::@1 main::@10 main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +render dominated by @BEGIN render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +render::@1 dominated by @BEGIN render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +render::@2 dominated by @BEGIN render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +render::@5 dominated by @BEGIN render::@2 render::@5 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +render::@3 dominated by @BEGIN render::@3 render::@2 render::@5 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +render::@return dominated by @BEGIN render::@3 render::@2 render::@5 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 render::@return main +findcol dominated by @BEGIN findcol render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +findcol::@1 dominated by @BEGIN findcol render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 findcol::@1 main +findcol::@3 dominated by @BEGIN findcol render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 findcol::@3 findcol::@1 main +findcol::@7 dominated by @BEGIN findcol render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 findcol::@7 main::@8 findcol::@3 findcol::@1 main +findcol::@8 dominated by @BEGIN findcol render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 findcol::@8 main::@7 main::@8 findcol::@3 findcol::@1 main +findcol::@10 dominated by @BEGIN findcol render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 findcol::@8 main::@8 findcol::@3 findcol::@1 findcol::@10 main +findcol::@11 dominated by @BEGIN findcol render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 findcol::@8 main::@8 findcol::@3 findcol::@1 findcol::@11 main +findcol::@13 dominated by @BEGIN findcol render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 findcol::@8 main::@8 findcol::@3 findcol::@1 findcol::@13 findcol::@11 main +findcol::@return dominated by @BEGIN findcol render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 findcol::@1 findcol::@return main +findcol::@12 dominated by @BEGIN findcol render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 findcol::@8 main::@8 findcol::@3 findcol::@1 findcol::@12 findcol::@11 main +findcol::@9 dominated by @BEGIN findcol render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 findcol::@8 main::@8 findcol::@3 findcol::@1 findcol::@9 main +findcol::@6 dominated by @BEGIN findcol render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 findcol::@6 findcol::@3 findcol::@1 main +findcol::@2 dominated by @BEGIN findcol render::@2 render::@1 render main::@1 main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 findcol::@2 findcol::@1 main +initscreen dominated by @BEGIN initscreen main::@4 main::@3 main::@6 main::@5 main::@7 main::@8 main +initscreen::@1 dominated by @BEGIN main::@4 initscreen main::@3 main::@6 main::@5 main::@7 main::@8 main initscreen::@1 +initscreen::@return dominated by @BEGIN main::@4 initscreen main::@3 main::@6 main::@5 main::@7 main::@8 initscreen::@return main initscreen::@1 addpoint dominated by @BEGIN addpoint main -addpoint::@return dominated by @BEGIN addpoint main addpoint::@return +addpoint::@return dominated by @BEGIN addpoint addpoint::@return main -Found back edge: Loop head: main::@1 tails: main::@10 blocks: null +Found back edge: Loop head: main::@1 tails: main::@11 blocks: null Found back edge: Loop head: render::@2 tails: render::@5 blocks: null Found back edge: Loop head: render::@1 tails: render::@3 blocks: null Found back edge: Loop head: findcol::@1 tails: findcol::@13 blocks: null -Populated: Loop head: main::@1 tails: main::@10 blocks: main::@10 main::@9 main::@1 +Found back edge: Loop head: initscreen::@1 tails: initscreen::@1 blocks: null +Populated: Loop head: main::@1 tails: main::@11 blocks: main::@11 main::@10 main::@1 Populated: Loop head: render::@2 tails: render::@5 blocks: render::@5 render::@2 Populated: Loop head: render::@1 tails: render::@3 blocks: render::@3 render::@5 render::@2 render::@1 Populated: Loop head: findcol::@1 tails: findcol::@13 blocks: findcol::@13 findcol::@11 findcol::@12 findcol::@10 findcol::@9 findcol::@8 findcol::@6 findcol::@7 findcol::@3 findcol::@1 findcol::@2 +Populated: Loop head: initscreen::@1 tails: initscreen::@1 blocks: initscreen::@1 NATURAL LOOPS -Loop head: main::@1 tails: main::@10 blocks: main::@10 main::@9 main::@1 +Loop head: main::@1 tails: main::@11 blocks: main::@11 main::@10 main::@1 Loop head: render::@2 tails: render::@5 blocks: render::@5 render::@2 Loop head: render::@1 tails: render::@3 blocks: render::@3 render::@5 render::@2 render::@1 Loop head: findcol::@1 tails: findcol::@13 blocks: findcol::@13 findcol::@11 findcol::@12 findcol::@10 findcol::@9 findcol::@8 findcol::@6 findcol::@7 findcol::@3 findcol::@1 findcol::@2 +Loop head: initscreen::@1 tails: initscreen::@1 blocks: initscreen::@1 Found 0 loops in scope [] Found 1 loops in scope [main] - Loop head: main::@1 tails: main::@10 blocks: main::@10 main::@9 main::@1 + Loop head: main::@1 tails: main::@11 blocks: main::@11 main::@10 main::@1 Found 0 loops in scope [addpoint] +Found 1 loops in scope [initscreen] + Loop head: initscreen::@1 tails: initscreen::@1 blocks: initscreen::@1 Found 2 loops in scope [render] Loop head: render::@2 tails: render::@5 blocks: render::@5 render::@2 Loop head: render::@1 tails: render::@3 blocks: render::@3 render::@5 render::@2 render::@1 @@ -6523,10 +6710,11 @@ Found 0 loops in scope [animate] Found 1 loops in scope [findcol] Loop head: findcol::@1 tails: findcol::@13 blocks: findcol::@13 findcol::@11 findcol::@12 findcol::@10 findcol::@9 findcol::@8 findcol::@6 findcol::@7 findcol::@3 findcol::@1 findcol::@2 NATURAL LOOPS WITH DEPTH -Loop head: main::@1 tails: main::@10 blocks: main::@10 main::@9 main::@1 depth: 1 +Loop head: main::@1 tails: main::@11 blocks: main::@11 main::@10 main::@1 depth: 1 Loop head: render::@2 tails: render::@5 blocks: render::@5 render::@2 depth: 3 Loop head: render::@1 tails: render::@3 blocks: render::@3 render::@5 render::@2 render::@1 depth: 2 Loop head: findcol::@1 tails: findcol::@13 blocks: findcol::@13 findcol::@11 findcol::@12 findcol::@10 findcol::@9 findcol::@8 findcol::@6 findcol::@7 findcol::@3 findcol::@1 findcol::@2 depth: 4 +Loop head: initscreen::@1 tails: initscreen::@1 blocks: initscreen::@1 depth: 1 VARIABLE REGISTER WEIGHTS @@ -6588,7 +6776,7 @@ VARIABLE REGISTER WEIGHTS (byte) findcol::mindiff#10 1875.1875 (byte) findcol::mindiff#11 10001.0 (byte) findcol::return -(byte) findcol::return#0 152.80555555555554 +(byte) findcol::return#0 144.76315789473685 (byte) findcol::x (byte) findcol::x#0 1577.1153846153845 (byte) findcol::xp @@ -6597,34 +6785,35 @@ VARIABLE REGISTER WEIGHTS (byte) findcol::y#0 1640.2 (byte) findcol::yp (byte) findcol::yp#0 6250.625 +(void()) initscreen() +(byte*) initscreen::screen +(byte*) initscreen::screen#1 16.5 +(byte*) initscreen::screen#2 16.5 (void()) main() (byte) numpoints (void()) render() -(byte*) render::chrline -(byte*) render::chrline#1 50.5 -(byte*) render::chrline#2 36.45454545454545 (byte) render::col (byte) render::col#0 2002.0 (byte*) render::colline (byte*) render::colline#1 67.33333333333333 -(byte*) render::colline#2 35.38235294117647 +(byte*) render::colline#2 37.59375 (byte) render::x (byte) render::x#1 1501.5 -(byte) render::x#2 166.83333333333334 +(byte) render::x#2 138.06896551724137 (byte) render::y (byte) render::y#1 151.5 -(byte) render::y#2 34.371428571428574 +(byte) render::y#2 36.45454545454545 Initial phi equivalence classes [ render::y#2 render::y#1 ] [ render::colline#2 render::colline#1 ] -[ render::chrline#2 render::chrline#1 ] [ render::x#2 render::x#1 ] [ findcol::i#12 findcol::i#1 ] [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] +[ initscreen::screen#2 initscreen::screen#1 ] [ addpoint::x#6 ] [ addpoint::idx#6 ] [ addpoint::y#6 ] @@ -6659,13 +6848,13 @@ Added variable findcol::$8 to zero page equivalence class [ findcol::$8 ] Complete equivalence classes [ render::y#2 render::y#1 ] [ render::colline#2 render::colline#1 ] -[ render::chrline#2 render::chrline#1 ] [ render::x#2 render::x#1 ] [ findcol::i#12 findcol::i#1 ] [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] +[ initscreen::screen#2 initscreen::screen#1 ] [ addpoint::x#6 ] [ addpoint::idx#6 ] [ addpoint::y#6 ] @@ -6699,13 +6888,13 @@ Complete equivalence classes [ findcol::$8 ] Allocated zp byte:2 to zp byte:2 [ render::y#2 render::y#1 ] Allocated zp ptr byte:3 to zp ptr byte:3 [ render::colline#2 render::colline#1 ] -Allocated zp ptr byte:5 to zp ptr byte:5 [ render::chrline#2 render::chrline#1 ] -Allocated zp byte:7 to zp byte:7 [ render::x#2 render::x#1 ] -Allocated zp byte:8 to zp byte:8 [ findcol::i#12 findcol::i#1 ] -Allocated zp byte:9 to zp byte:9 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] -Allocated zp byte:10 to zp byte:10 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] -Allocated zp byte:11 to zp byte:11 [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] -Allocated zp byte:12 to zp byte:12 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] +Allocated zp byte:5 to zp byte:5 [ render::x#2 render::x#1 ] +Allocated zp byte:6 to zp byte:6 [ findcol::i#12 findcol::i#1 ] +Allocated zp byte:7 to zp byte:7 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] +Allocated zp byte:8 to zp byte:8 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] +Allocated zp byte:9 to zp byte:9 [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] +Allocated zp byte:10 to zp byte:10 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] +Allocated zp ptr byte:11 to zp ptr byte:11 [ initscreen::screen#2 initscreen::screen#1 ] Allocated zp byte:13 to zp byte:13 [ addpoint::x#6 ] Allocated zp byte:14 to zp byte:14 [ addpoint::idx#6 ] Allocated zp byte:15 to zp byte:15 [ addpoint::y#6 ] @@ -6748,18 +6937,18 @@ BEND: //SEG3 main main: //SEG4 [1] call addpoint param-assignment [ findcol::return#0 ] -//SEG5 [88] phi from main to addpoint +//SEG5 [92] phi from main to addpoint addpoint_from_main: -//SEG6 [88] phi (byte) addpoint::c#6 = (byte) 1 -- zpby1=coby1 +//SEG6 [92] phi (byte) addpoint::c#6 = (byte) 1 -- zpby1=coby1 lda #1 sta 16 -//SEG7 [88] phi (byte) addpoint::y#6 = (byte) 5 -- zpby1=coby1 +//SEG7 [92] phi (byte) addpoint::y#6 = (byte) 5 -- zpby1=coby1 lda #5 sta 15 -//SEG8 [88] phi (byte) addpoint::idx#6 = (byte) 0 -- zpby1=coby1 +//SEG8 [92] phi (byte) addpoint::idx#6 = (byte) 0 -- zpby1=coby1 lda #0 sta 14 -//SEG9 [88] phi (byte) addpoint::x#6 = (byte) 5 -- zpby1=coby1 +//SEG9 [92] phi (byte) addpoint::x#6 = (byte) 5 -- zpby1=coby1 lda #5 sta 13 jsr addpoint @@ -6767,18 +6956,18 @@ addpoint_from_main: //SEG10 main::@3 main__B3: //SEG11 [2] call addpoint param-assignment [ findcol::return#0 ] -//SEG12 [88] phi from main::@3 to addpoint +//SEG12 [92] phi from main::@3 to addpoint addpoint_from_B3: -//SEG13 [88] phi (byte) addpoint::c#6 = (byte) 2 -- zpby1=coby1 +//SEG13 [92] phi (byte) addpoint::c#6 = (byte) 2 -- zpby1=coby1 lda #2 sta 16 -//SEG14 [88] phi (byte) addpoint::y#6 = (byte) 8 -- zpby1=coby1 +//SEG14 [92] phi (byte) addpoint::y#6 = (byte) 8 -- zpby1=coby1 lda #8 sta 15 -//SEG15 [88] phi (byte) addpoint::idx#6 = (byte) 1 -- zpby1=coby1 +//SEG15 [92] phi (byte) addpoint::idx#6 = (byte) 1 -- zpby1=coby1 lda #1 sta 14 -//SEG16 [88] phi (byte) addpoint::x#6 = (byte) 15 -- zpby1=coby1 +//SEG16 [92] phi (byte) addpoint::x#6 = (byte) 15 -- zpby1=coby1 lda #15 sta 13 jsr addpoint @@ -6786,18 +6975,18 @@ addpoint_from_B3: //SEG17 main::@4 main__B4: //SEG18 [3] call addpoint param-assignment [ findcol::return#0 ] -//SEG19 [88] phi from main::@4 to addpoint +//SEG19 [92] phi from main::@4 to addpoint addpoint_from_B4: -//SEG20 [88] phi (byte) addpoint::c#6 = (byte) 3 -- zpby1=coby1 +//SEG20 [92] phi (byte) addpoint::c#6 = (byte) 3 -- zpby1=coby1 lda #3 sta 16 -//SEG21 [88] phi (byte) addpoint::y#6 = (byte) 14 -- zpby1=coby1 +//SEG21 [92] phi (byte) addpoint::y#6 = (byte) 14 -- zpby1=coby1 lda #14 sta 15 -//SEG22 [88] phi (byte) addpoint::idx#6 = (byte) 2 -- zpby1=coby1 +//SEG22 [92] phi (byte) addpoint::idx#6 = (byte) 2 -- zpby1=coby1 lda #2 sta 14 -//SEG23 [88] phi (byte) addpoint::x#6 = (byte) 6 -- zpby1=coby1 +//SEG23 [92] phi (byte) addpoint::x#6 = (byte) 6 -- zpby1=coby1 lda #6 sta 13 jsr addpoint @@ -6805,18 +6994,18 @@ addpoint_from_B4: //SEG24 main::@5 main__B5: //SEG25 [4] call addpoint param-assignment [ findcol::return#0 ] -//SEG26 [88] phi from main::@5 to addpoint +//SEG26 [92] phi from main::@5 to addpoint addpoint_from_B5: -//SEG27 [88] phi (byte) addpoint::c#6 = (byte) 4 -- zpby1=coby1 +//SEG27 [92] phi (byte) addpoint::c#6 = (byte) 4 -- zpby1=coby1 lda #4 sta 16 -//SEG28 [88] phi (byte) addpoint::y#6 = (byte) 2 -- zpby1=coby1 +//SEG28 [92] phi (byte) addpoint::y#6 = (byte) 2 -- zpby1=coby1 lda #2 sta 15 -//SEG29 [88] phi (byte) addpoint::idx#6 = (byte) 3 -- zpby1=coby1 +//SEG29 [92] phi (byte) addpoint::idx#6 = (byte) 3 -- zpby1=coby1 lda #3 sta 14 -//SEG30 [88] phi (byte) addpoint::x#6 = (byte) 34 -- zpby1=coby1 +//SEG30 [92] phi (byte) addpoint::x#6 = (byte) 34 -- zpby1=coby1 lda #34 sta 13 jsr addpoint @@ -6824,18 +7013,18 @@ addpoint_from_B5: //SEG31 main::@6 main__B6: //SEG32 [5] call addpoint param-assignment [ findcol::return#0 ] -//SEG33 [88] phi from main::@6 to addpoint +//SEG33 [92] phi from main::@6 to addpoint addpoint_from_B6: -//SEG34 [88] phi (byte) addpoint::c#6 = (byte) 5 -- zpby1=coby1 +//SEG34 [92] phi (byte) addpoint::c#6 = (byte) 5 -- zpby1=coby1 lda #5 sta 16 -//SEG35 [88] phi (byte) addpoint::y#6 = (byte) 17 -- zpby1=coby1 +//SEG35 [92] phi (byte) addpoint::y#6 = (byte) 17 -- zpby1=coby1 lda #17 sta 15 -//SEG36 [88] phi (byte) addpoint::idx#6 = (byte) 4 -- zpby1=coby1 +//SEG36 [92] phi (byte) addpoint::idx#6 = (byte) 4 -- zpby1=coby1 lda #4 sta 14 -//SEG37 [88] phi (byte) addpoint::x#6 = (byte) 21 -- zpby1=coby1 +//SEG37 [92] phi (byte) addpoint::x#6 = (byte) 21 -- zpby1=coby1 lda #21 sta 13 jsr addpoint @@ -6843,290 +7032,277 @@ addpoint_from_B6: //SEG38 main::@7 main__B7: //SEG39 [6] call addpoint param-assignment [ findcol::return#0 ] -//SEG40 [88] phi from main::@7 to addpoint +//SEG40 [92] phi from main::@7 to addpoint addpoint_from_B7: -//SEG41 [88] phi (byte) addpoint::c#6 = (byte) 7 -- zpby1=coby1 +//SEG41 [92] phi (byte) addpoint::c#6 = (byte) 7 -- zpby1=coby1 lda #7 sta 16 -//SEG42 [88] phi (byte) addpoint::y#6 = (byte) 22 -- zpby1=coby1 +//SEG42 [92] phi (byte) addpoint::y#6 = (byte) 22 -- zpby1=coby1 lda #22 sta 15 -//SEG43 [88] phi (byte) addpoint::idx#6 = (byte) 5 -- zpby1=coby1 +//SEG43 [92] phi (byte) addpoint::idx#6 = (byte) 5 -- zpby1=coby1 lda #5 sta 14 -//SEG44 [88] phi (byte) addpoint::x#6 = (byte) 31 -- zpby1=coby1 +//SEG44 [92] phi (byte) addpoint::x#6 = (byte) 31 -- zpby1=coby1 lda #31 sta 13 jsr addpoint + jmp main__B8 +//SEG45 main::@8 +main__B8: +//SEG46 [7] call initscreen param-assignment [ findcol::return#0 ] + jsr initscreen jmp main__B1 -//SEG45 main::@1 +//SEG47 main::@1 main__B1: -//SEG46 [7] call render param-assignment [ findcol::return#0 ] +//SEG48 [8] call render param-assignment [ findcol::return#0 ] jsr render - jmp main__B9 -//SEG47 main::@9 -main__B9: -//SEG48 [8] call animate param-assignment [ findcol::return#0 ] - jsr animate jmp main__B10 //SEG49 main::@10 main__B10: -//SEG50 [9] if(true) goto main::@1 [ findcol::return#0 ] -- true_then_la1 +//SEG50 [9] call animate param-assignment [ findcol::return#0 ] + jsr animate + jmp main__B11 +//SEG51 main::@11 +main__B11: +//SEG52 [10] if(true) goto main::@1 [ findcol::return#0 ] -- true_then_la1 jmp main__B1 jmp main__Breturn -//SEG51 main::@return +//SEG53 main::@return main__Breturn: -//SEG52 [10] return [ findcol::return#0 ] +//SEG54 [11] return [ findcol::return#0 ] rts -//SEG53 animate +//SEG55 animate animate: -//SEG54 [11] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] -- zpby1=_star_cowo1 +//SEG56 [12] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] -- zpby1=_star_cowo1 lda 4096 sta 17 -//SEG55 [12] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] -- zpby1=zpby2_plus_1 +//SEG57 [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] -- zpby1=zpby2_plus_1 lda 17 clc adc #1 sta 18 -//SEG56 [13] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] -- _star_cowo1=zpby1 +//SEG58 [14] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] -- _star_cowo1=zpby1 lda 18 sta 4096 -//SEG57 [14] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] -- zpby1=_star_cowo1 +//SEG59 [15] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] -- zpby1=_star_cowo1 lda 4096 sta 19 -//SEG58 [15] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] -- zpby1_eq_coby1_then_la1 +//SEG60 [16] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] -- zpby1_eq_coby1_then_la1 lda 19 cmp #40 beq animate__B1 jmp animate__B2 -//SEG59 animate::@2 +//SEG61 animate::@2 animate__B2: -//SEG60 [16] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] -- zpby1=_star_cowo1 +//SEG62 [17] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] -- zpby1=_star_cowo1 lda 4352 sta 20 -//SEG61 [17] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] -- zpby1=zpby2_plus_1 +//SEG63 [18] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] -- zpby1=zpby2_plus_1 lda 20 clc adc #1 sta 21 -//SEG62 [18] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] -- _star_cowo1=zpby1 +//SEG64 [19] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] -- _star_cowo1=zpby1 lda 21 sta 4352 -//SEG63 [19] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] -- zpby1=_star_cowo1 +//SEG65 [20] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] -- zpby1=_star_cowo1 lda 4352 sta 22 -//SEG64 [20] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] -- zpby1_eq_coby1_then_la1 +//SEG66 [21] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] -- zpby1_eq_coby1_then_la1 lda 22 cmp #25 beq animate__B3 jmp animate__B4 -//SEG65 animate::@4 +//SEG67 animate::@4 animate__B4: -//SEG66 [21] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] -- zpby1=_star_cowo1 +//SEG68 [22] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] -- zpby1=_star_cowo1 lda 4097 sta 23 -//SEG67 [22] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] -- zpby1=zpby2_minus_1 +//SEG69 [23] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] -- zpby1=zpby2_minus_1 lda 23 sec sbc #1 sta 24 -//SEG68 [23] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] -- _star_cowo1=zpby1 +//SEG70 [24] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] -- _star_cowo1=zpby1 lda 24 sta 4097 -//SEG69 [24] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] -- zpby1=_star_cowo1 +//SEG71 [25] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] -- zpby1=_star_cowo1 lda 4097 sta 25 -//SEG70 [25] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] -- zpby1_eq_coby1_then_la1 +//SEG72 [26] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] -- zpby1_eq_coby1_then_la1 lda 25 cmp #255 beq animate__B5 jmp animate__B6 -//SEG71 animate::@6 +//SEG73 animate::@6 animate__B6: -//SEG72 [26] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] -- zpby1=_star_cowo1 +//SEG74 [27] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] -- zpby1=_star_cowo1 lda 4354 sta 26 -//SEG73 [27] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] -- zpby1=zpby2_plus_1 +//SEG75 [28] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] -- zpby1=zpby2_plus_1 lda 26 clc adc #1 sta 27 -//SEG74 [28] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] -- _star_cowo1=zpby1 +//SEG76 [29] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] -- _star_cowo1=zpby1 lda 27 sta 4354 -//SEG75 [29] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] -- zpby1=_star_cowo1 +//SEG77 [30] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] -- zpby1=_star_cowo1 lda 4354 sta 28 -//SEG76 [30] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] -- zpby1_eq_coby1_then_la1 +//SEG78 [31] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] -- zpby1_eq_coby1_then_la1 lda 28 cmp #25 beq animate__B7 jmp animate__B8 -//SEG77 animate::@8 +//SEG79 animate::@8 animate__B8: -//SEG78 [31] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] -- zpby1=_star_cowo1 +//SEG80 [32] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] -- zpby1=_star_cowo1 lda 4355 sta 29 -//SEG79 [32] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] -- zpby1=zpby2_minus_1 +//SEG81 [33] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] -- zpby1=zpby2_minus_1 lda 29 sec sbc #1 sta 30 -//SEG80 [33] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] -- _star_cowo1=zpby1 +//SEG82 [34] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] -- _star_cowo1=zpby1 lda 30 sta 4355 -//SEG81 [34] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] -- zpby1=_star_cowo1 +//SEG83 [35] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] -- zpby1=_star_cowo1 lda 4355 sta 31 -//SEG82 [35] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] -- zpby1_eq_coby1_then_la1 +//SEG84 [36] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] -- zpby1_eq_coby1_then_la1 lda 31 cmp #255 beq animate__B9 jmp animate__Breturn -//SEG83 animate::@return +//SEG85 animate::@return animate__Breturn: -//SEG84 [36] return [ findcol::return#0 ] +//SEG86 [37] return [ findcol::return#0 ] rts -//SEG85 animate::@9 +//SEG87 animate::@9 animate__B9: -//SEG86 [37] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG88 [38] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #25 sta 4355 -//SEG87 [38] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] -- zpby1=_star_cowo1 +//SEG89 [39] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] -- zpby1=_star_cowo1 lda 4099 sta 32 -//SEG88 [39] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] -- zpby1=zpby2_plus_coby1 +//SEG90 [40] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] -- zpby1=zpby2_plus_coby1 lda 32 clc adc #7 sta 33 -//SEG89 [40] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] -- _star_cowo1=zpby1 +//SEG91 [41] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] -- _star_cowo1=zpby1 lda 33 sta 4099 -//SEG90 [41] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] -- zpby1=_star_cowo1 +//SEG92 [42] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] -- zpby1=_star_cowo1 lda 4099 sta 34 -//SEG91 [42] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] -- zpby1_ge_coby1_then_la1 +//SEG93 [43] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] -- zpby1_ge_coby1_then_la1 lda 34 cmp #40 bcs animate__B11 jmp animate__Breturn -//SEG92 animate::@11 +//SEG94 animate::@11 animate__B11: -//SEG93 [43] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] -- zpby1=_star_cowo1 +//SEG95 [44] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] -- zpby1=_star_cowo1 lda 4099 sta 35 -//SEG94 [44] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] -- zpby1=zpby2_minus_coby1 +//SEG96 [45] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] -- zpby1=zpby2_minus_coby1 lda 35 sec sbc #40 sta 36 -//SEG95 [45] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] -- _star_cowo1=zpby1 +//SEG97 [46] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] -- _star_cowo1=zpby1 lda 36 sta 4099 jmp animate__Breturn -//SEG96 animate::@7 +//SEG98 animate::@7 animate__B7: -//SEG97 [46] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG99 [47] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #0 sta 4354 jmp animate__B8 -//SEG98 animate::@5 +//SEG100 animate::@5 animate__B5: -//SEG99 [47] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG101 [48] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #40 sta 4097 jmp animate__B6 -//SEG100 animate::@3 +//SEG102 animate::@3 animate__B3: -//SEG101 [48] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG103 [49] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #0 sta 4352 jmp animate__B4 -//SEG102 animate::@1 +//SEG104 animate::@1 animate__B1: -//SEG103 [49] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG105 [50] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #0 sta 4096 jmp animate__B2 -//SEG104 render +//SEG106 render render: -//SEG105 [50] phi from render to render::@1 +//SEG107 [51] phi from render to render::@1 render__B1_from_render: -//SEG106 [50] phi (byte*) render::chrline#2 = (word) 1024 -- zpptrby1=cowo1 - lda #<1024 - sta 5 - lda #>1024 - sta 5+1 -//SEG107 [50] phi (byte*) render::colline#2 = (word) 55296 -- zpptrby1=cowo1 +//SEG108 [51] phi (byte*) render::colline#2 = (word) 55296 -- zpptrby1=cowo1 lda #<55296 sta 3 lda #>55296 sta 3+1 -//SEG108 [50] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 +//SEG109 [51] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 lda #0 sta 2 jmp render__B1 -//SEG109 [50] phi from render::@3 to render::@1 +//SEG110 [51] phi from render::@3 to render::@1 render__B1_from_B3: -//SEG110 [50] phi (byte*) render::chrline#2 = (byte*) render::chrline#1 -- register_copy -//SEG111 [50] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy -//SEG112 [50] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy +//SEG111 [51] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy +//SEG112 [51] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy jmp render__B1 //SEG113 render::@1 render__B1: -//SEG114 [51] phi from render::@1 to render::@2 +//SEG114 [52] phi from render::@1 to render::@2 render__B2_from_B1: -//SEG115 [51] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 +//SEG115 [52] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 lda #0 - sta 7 + sta 5 jmp render__B2 -//SEG116 [51] phi from render::@5 to render::@2 +//SEG116 [52] phi from render::@5 to render::@2 render__B2_from_B5: -//SEG117 [51] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy +//SEG117 [52] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy jmp render__B2 //SEG118 render::@2 render__B2: -//SEG119 [52] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 ] -- zpby1=zpby2 - lda 7 +//SEG119 [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 ] -- zpby1=zpby2 + lda 5 sta 37 -//SEG120 [53] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] -- zpby1=zpby2 +//SEG120 [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] -- zpby1=zpby2 lda 2 sta 38 -//SEG121 [54] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] +//SEG121 [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] jsr findcol jmp render__B5 //SEG122 render::@5 render__B5: -//SEG123 [55] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 render::chrline#2 ] -- zpby1=zpby2 - lda 12 +//SEG123 [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 ] -- zpby1=zpby2 + lda 10 sta 39 -//SEG124 [56] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpptrby1_staridx_zpby1=zpby2 +//SEG124 [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] -- zpptrby1_staridx_zpby1=zpby2 lda 39 - ldy 7 + ldy 5 sta (3),y -//SEG125 [57] *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) 230 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpptrby1_staridx_zpby1=coby1 - lda #230 - ldy 7 - sta (5),y -//SEG126 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpby1=_inc_zpby1 - inc 7 -//SEG127 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpby1_lt_coby1_then_la1 - lda 7 +//SEG125 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 ] -- zpby1=_inc_zpby1 + inc 5 +//SEG126 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 ] -- zpby1_lt_coby1_then_la1 + lda 5 cmp #40 bcc render__B2_from_B5 jmp render__B3 -//SEG128 render::@3 +//SEG127 render::@3 render__B3: -//SEG129 [60] (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 [ render::chrline#1 render::y#2 findcol::return#0 render::colline#2 ] -- zpptrby1=zpptrby1_plus_coby1 - lda 5 - clc - adc #40 - sta 5 - bcc !+ - inc 5+1 -!: -//SEG130 [61] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::chrline#1 render::y#2 findcol::return#0 ] -- zpptrby1=zpptrby1_plus_coby1 +//SEG128 [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 findcol::return#0 ] -- zpptrby1=zpptrby1_plus_coby1 lda 3 clc adc #40 @@ -7134,231 +7310,271 @@ render__B3: bcc !+ inc 3+1 !: -//SEG131 [62] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 render::chrline#1 findcol::return#0 ] -- zpby1=_inc_zpby1 +//SEG129 [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 findcol::return#0 ] -- zpby1=_inc_zpby1 inc 2 -//SEG132 [63] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 render::chrline#1 findcol::return#0 ] -- zpby1_lt_coby1_then_la1 +//SEG130 [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 findcol::return#0 ] -- zpby1_lt_coby1_then_la1 lda 2 cmp #25 bcc render__B1_from_B3 jmp render__Breturn -//SEG133 render::@return +//SEG131 render::@return render__Breturn: -//SEG134 [64] return [ findcol::return#0 ] +//SEG132 [63] return [ findcol::return#0 ] rts -//SEG135 findcol +//SEG133 findcol findcol: -//SEG136 [65] phi from findcol to findcol::@1 +//SEG134 [64] phi from findcol to findcol::@1 findcol__B1_from_findcol: -//SEG137 [65] phi (byte) findcol::mincol#11 = (byte) 0 -- zpby1=coby1 +//SEG135 [64] phi (byte) findcol::mincol#11 = (byte) 0 -- zpby1=coby1 lda #0 - sta 12 -//SEG138 [65] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 + sta 10 +//SEG136 [64] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 lda #255 - sta 9 -//SEG139 [65] phi (byte) findcol::i#12 = (byte) 0 -- zpby1=coby1 + sta 7 +//SEG137 [64] phi (byte) findcol::i#12 = (byte) 0 -- zpby1=coby1 lda #0 - sta 8 + sta 6 jmp findcol__B1 -//SEG140 [65] phi from findcol::@13 to findcol::@1 +//SEG138 [64] phi from findcol::@13 to findcol::@1 findcol__B1_from_B13: -//SEG141 [65] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy -//SEG142 [65] phi (byte) findcol::mindiff#10 = (byte) findcol::mindiff#11 -- register_copy -//SEG143 [65] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy +//SEG139 [64] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy +//SEG140 [64] phi (byte) findcol::mindiff#10 = (byte) findcol::mindiff#11 -- register_copy +//SEG141 [64] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy jmp findcol__B1 -//SEG144 findcol::@1 +//SEG142 findcol::@1 findcol__B1: -//SEG145 [66] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_zpby2 - ldx 8 +//SEG143 [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_zpby2 + ldx 6 lda 4096,x sta 40 -//SEG146 [67] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_zpby2 - ldx 8 +//SEG144 [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_zpby2 + ldx 6 lda 4352,x sta 41 -//SEG147 [68] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 +//SEG145 [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 lda 37 cmp 40 beq findcol__B2 jmp findcol__B3 -//SEG148 findcol::@3 +//SEG146 findcol::@3 findcol__B3: -//SEG149 [69] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 +//SEG147 [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 lda 37 cmp 40 bcc findcol__B6 jmp findcol__B7 -//SEG150 findcol::@7 +//SEG148 findcol::@7 findcol__B7: -//SEG151 [70] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_zpby3 +//SEG149 [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_zpby3 lda 37 sec sbc 40 - sta 10 -//SEG152 [71] phi from findcol::@7 to findcol::@8 + sta 8 +//SEG150 [70] phi from findcol::@7 to findcol::@8 findcol__B8_from_B7: -//SEG153 [71] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy +//SEG151 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy jmp findcol__B8 -//SEG154 findcol::@8 +//SEG152 findcol::@8 findcol__B8: -//SEG155 [72] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 +//SEG153 [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 lda 38 cmp 41 bcc findcol__B9 jmp findcol__B10 -//SEG156 findcol::@10 +//SEG154 findcol::@10 findcol__B10: -//SEG157 [73] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_zpby3 +//SEG155 [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_zpby3 lda 38 sec sbc 41 sta 42 -//SEG158 [74] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_plus_zpby3 - lda 10 +//SEG156 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_plus_zpby3 + lda 8 clc adc 42 - sta 11 -//SEG159 [75] phi from findcol::@10 to findcol::@11 + sta 9 +//SEG157 [74] phi from findcol::@10 to findcol::@11 findcol__B11_from_B10: -//SEG160 [75] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy +//SEG158 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy jmp findcol__B11 -//SEG161 findcol::@11 +//SEG159 findcol::@11 findcol__B11: -//SEG162 [76] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 - lda 11 - cmp 9 +//SEG160 [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 + lda 9 + cmp 7 bcc findcol__B12 -//SEG163 [77] phi from findcol::@11 to findcol::@13 +//SEG161 [76] phi from findcol::@11 to findcol::@13 findcol__B13_from_B11: -//SEG164 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::mindiff#10 -- register_copy -//SEG165 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#11 -- register_copy +//SEG162 [76] phi (byte) findcol::mindiff#11 = (byte) findcol::mindiff#10 -- register_copy +//SEG163 [76] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#11 -- register_copy jmp findcol__B13 -//SEG166 findcol::@13 +//SEG164 findcol::@13 findcol__B13: -//SEG167 [78] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- zpby1=_inc_zpby1 - inc 8 -//SEG168 [79] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- zpby1_lt_coby1_then_la1 - lda 8 +//SEG165 [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- zpby1=_inc_zpby1 + inc 6 +//SEG166 [78] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- zpby1_lt_coby1_then_la1 + lda 6 cmp #6 bcc findcol__B1_from_B13 -//SEG169 [80] phi from findcol::@13 to findcol::@return +//SEG167 [79] phi from findcol::@13 to findcol::@return findcol__Breturn_from_B13: -//SEG170 [80] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy +//SEG168 [79] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy jmp findcol__Breturn -//SEG171 [80] phi from findcol::@2 to findcol::@return +//SEG169 [79] phi from findcol::@2 to findcol::@return findcol__Breturn_from_B2: -//SEG172 [80] phi (byte) findcol::return#0 = (byte) 0 -- zpby1=coby1 +//SEG170 [79] phi (byte) findcol::return#0 = (byte) 0 -- zpby1=coby1 lda #0 - sta 12 + sta 10 jmp findcol__Breturn -//SEG173 findcol::@return +//SEG171 findcol::@return findcol__Breturn: -//SEG174 [81] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] +//SEG172 [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] rts -//SEG175 findcol::@12 +//SEG173 findcol::@12 findcol__B12: -//SEG176 [82] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] -- zpby1=cowo1_staridx_zpby2 - ldx 8 +//SEG174 [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] -- zpby1=cowo1_staridx_zpby2 + ldx 6 lda 4608,x - sta 12 -//SEG177 [83] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] -- zpby1=zpby2 - lda 11 - sta 9 -//SEG178 [77] phi from findcol::@12 to findcol::@13 + sta 10 +//SEG175 [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] -- zpby1=zpby2 + lda 9 + sta 7 +//SEG176 [76] phi from findcol::@12 to findcol::@13 findcol__B13_from_B12: -//SEG179 [77] phi (byte) findcol::mindiff#11 = (byte~) findcol::diff#13 -- register_copy -//SEG180 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy +//SEG177 [76] phi (byte) findcol::mindiff#11 = (byte~) findcol::diff#13 -- register_copy +//SEG178 [76] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy jmp findcol__B13 -//SEG181 findcol::@9 +//SEG179 findcol::@9 findcol__B9: -//SEG182 [84] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] -- zpby1=zpby2_minus_zpby3 +//SEG180 [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] -- zpby1=zpby2_minus_zpby3 lda 41 sec sbc 38 sta 43 -//SEG183 [85] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_plus_zpby3 - lda 10 +//SEG181 [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_plus_zpby3 + lda 8 clc adc 43 - sta 11 -//SEG184 [75] phi from findcol::@9 to findcol::@11 + sta 9 +//SEG182 [74] phi from findcol::@9 to findcol::@11 findcol__B11_from_B9: -//SEG185 [75] phi (byte) findcol::diff#6 = (byte) findcol::diff#2 -- register_copy +//SEG183 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#2 -- register_copy jmp findcol__B11 -//SEG186 findcol::@6 +//SEG184 findcol::@6 findcol__B6: -//SEG187 [86] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_zpby3 +//SEG185 [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_zpby3 lda 40 sec sbc 37 - sta 10 -//SEG188 [71] phi from findcol::@6 to findcol::@8 + sta 8 +//SEG186 [70] phi from findcol::@6 to findcol::@8 findcol__B8_from_B6: -//SEG189 [71] phi (byte) findcol::diff#4 = (byte) findcol::diff#0 -- register_copy +//SEG187 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#0 -- register_copy jmp findcol__B8 -//SEG190 findcol::@2 +//SEG188 findcol::@2 findcol__B2: -//SEG191 [87] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 +//SEG189 [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 lda 38 cmp 41 beq findcol__Breturn_from_B2 jmp findcol__B3 -//SEG192 addpoint +//SEG190 initscreen +initscreen: +//SEG191 [87] phi from initscreen to initscreen::@1 +initscreen__B1_from_initscreen: +//SEG192 [87] phi (byte*) initscreen::screen#2 = (word) 1024 -- zpptrby1=cowo1 + lda #<1024 + sta 11 + lda #>1024 + sta 11+1 + jmp initscreen__B1 +//SEG193 [87] phi from initscreen::@1 to initscreen::@1 +initscreen__B1_from_B1: +//SEG194 [87] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 -- register_copy + jmp initscreen__B1 +//SEG195 initscreen::@1 +initscreen__B1: +//SEG196 [88] *((byte*) initscreen::screen#2) ← (byte) 230 [ findcol::return#0 initscreen::screen#2 ] -- _star_zpptrby1=coby1 + ldy #0 + lda #230 + sta (11),y +//SEG197 [89] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ findcol::return#0 initscreen::screen#1 ] -- zpptrby1=_inc_zpptrby1 + inc 11 + bne !+ + inc 11+1 +!: +//SEG198 [90] if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 [ findcol::return#0 initscreen::screen#1 ] -- zpptrby1_lt_cowo1_then_la1 + lda 11+1 + cmp #>2048 + bcc initscreen__B1_from_B1 + bne !+ + lda 11 + cmp #<2048 + bcc initscreen__B1_from_B1 +!: + jmp initscreen__Breturn +//SEG199 initscreen::@return +initscreen__Breturn: +//SEG200 [91] return [ findcol::return#0 ] + rts +//SEG201 addpoint addpoint: -//SEG193 [89] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_zpby1=zpby2 +//SEG202 [93] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_zpby1=zpby2 lda 13 ldx 14 sta 4096,x -//SEG194 [90] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] -- cowo1_staridx_zpby1=zpby2 +//SEG203 [94] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] -- cowo1_staridx_zpby1=zpby2 lda 15 ldx 14 sta 4352,x -//SEG195 [91] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] -- cowo1_staridx_zpby1=zpby2 +//SEG204 [95] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] -- cowo1_staridx_zpby1=zpby2 lda 16 ldx 14 sta 4608,x jmp addpoint__Breturn -//SEG196 addpoint::@return +//SEG205 addpoint::@return addpoint__Breturn: -//SEG197 [92] return [ findcol::return#0 ] +//SEG206 [96] return [ findcol::return#0 ] rts -Statement [37] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp byte:12 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] -Statement [39] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] always clobbers reg byte a -Statement [44] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] always clobbers reg byte a -Statement [46] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] always clobbers reg byte a -Statement [47] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] always clobbers reg byte a -Statement [48] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] always clobbers reg byte a -Statement [49] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] always clobbers reg byte a -Statement [57] *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) 230 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp byte:7 [ render::x#2 render::x#1 ] +Statement [38] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp byte:10 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] +Statement [40] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] always clobbers reg byte a +Statement [45] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] always clobbers reg byte a +Statement [47] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] always clobbers reg byte a +Statement [48] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] always clobbers reg byte a +Statement [49] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] always clobbers reg byte a +Statement [50] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] always clobbers reg byte a +Statement [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 findcol::return#0 ] always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp byte:2 [ render::y#2 render::y#1 ] -Statement [60] (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 [ render::chrline#1 render::y#2 findcol::return#0 render::colline#2 ] always clobbers reg byte a -Statement [61] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::chrline#1 render::y#2 findcol::return#0 ] always clobbers reg byte a -Statement [70] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp byte:8 [ findcol::i#12 findcol::i#1 ] +Statement [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp byte:5 [ render::x#2 render::x#1 ] +Removing always clobbered register reg byte a as potential for zp byte:6 [ findcol::i#12 findcol::i#1 ] Removing always clobbered register reg byte a as potential for zp byte:37 [ findcol::x#0 ] Removing always clobbered register reg byte a as potential for zp byte:38 [ findcol::y#0 ] Removing always clobbered register reg byte a as potential for zp byte:41 [ findcol::yp#0 ] -Removing always clobbered register reg byte a as potential for zp byte:9 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] -Statement [73] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp byte:10 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] -Statement [84] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] always clobbers reg byte a -Statement [86] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a -Statement [37] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] always clobbers reg byte a -Statement [39] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] always clobbers reg byte a -Statement [44] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] always clobbers reg byte a -Statement [46] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] always clobbers reg byte a -Statement [47] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] always clobbers reg byte a -Statement [48] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] always clobbers reg byte a -Statement [49] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] always clobbers reg byte a -Statement [57] *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) 230 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] always clobbers reg byte a -Statement [60] (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 [ render::chrline#1 render::y#2 findcol::return#0 render::colline#2 ] always clobbers reg byte a -Statement [61] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::chrline#1 render::y#2 findcol::return#0 ] always clobbers reg byte a -Statement [70] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a -Statement [73] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a -Statement [84] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] always clobbers reg byte a -Statement [86] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp byte:7 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] +Statement [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp byte:8 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] +Statement [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] always clobbers reg byte a +Statement [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a +Statement [88] *((byte*) initscreen::screen#2) ← (byte) 230 [ findcol::return#0 initscreen::screen#2 ] always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp byte:10 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] +Statement [90] if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 [ findcol::return#0 initscreen::screen#1 ] always clobbers reg byte a +Statement [38] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] always clobbers reg byte a +Statement [40] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] always clobbers reg byte a +Statement [45] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] always clobbers reg byte a +Statement [47] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] always clobbers reg byte a +Statement [48] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] always clobbers reg byte a +Statement [49] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] always clobbers reg byte a +Statement [50] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] always clobbers reg byte a +Statement [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 findcol::return#0 ] always clobbers reg byte a +Statement [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a +Statement [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a +Statement [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] always clobbers reg byte a +Statement [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a +Statement [88] *((byte*) initscreen::screen#2) ← (byte) 230 [ findcol::return#0 initscreen::screen#2 ] always clobbers reg byte a reg byte y +Statement [90] if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 [ findcol::return#0 initscreen::screen#1 ] always clobbers reg byte a Equivalence Class zp byte:17 [ animate::$0 ] has ALU potential. Equivalence Class zp byte:20 [ animate::$4 ] has ALU potential. Equivalence Class zp byte:26 [ animate::$12 ] has ALU potential. @@ -7366,13 +7582,13 @@ Equivalence Class zp byte:32 [ animate::$20 ] has ALU potential. REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp byte:2 [ render::y#2 render::y#1 ] : zp byte:2 , reg byte x , reg byte y , Potential registers zp ptr byte:3 [ render::colline#2 render::colline#1 ] : zp ptr byte:3 , -Potential registers zp ptr byte:5 [ render::chrline#2 render::chrline#1 ] : zp ptr byte:5 , -Potential registers zp byte:7 [ render::x#2 render::x#1 ] : zp byte:7 , reg byte x , reg byte y , -Potential registers zp byte:8 [ findcol::i#12 findcol::i#1 ] : zp byte:8 , reg byte x , reg byte y , -Potential registers zp byte:9 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] : zp byte:9 , reg byte x , reg byte y , -Potential registers zp byte:10 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] : zp byte:10 , reg byte x , reg byte y , -Potential registers zp byte:11 [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] : zp byte:11 , reg byte a , reg byte x , reg byte y , -Potential registers zp byte:12 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] : zp byte:12 , reg byte x , reg byte y , +Potential registers zp byte:5 [ render::x#2 render::x#1 ] : zp byte:5 , reg byte x , reg byte y , +Potential registers zp byte:6 [ findcol::i#12 findcol::i#1 ] : zp byte:6 , reg byte x , reg byte y , +Potential registers zp byte:7 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] : zp byte:7 , reg byte x , reg byte y , +Potential registers zp byte:8 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] : zp byte:8 , reg byte x , reg byte y , +Potential registers zp byte:9 [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] : zp byte:9 , reg byte a , reg byte x , reg byte y , +Potential registers zp byte:10 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] : zp byte:10 , reg byte x , +Potential registers zp ptr byte:11 [ initscreen::screen#2 initscreen::screen#1 ] : zp ptr byte:11 , Potential registers zp byte:13 [ addpoint::x#6 ] : zp byte:13 , reg byte a , reg byte x , reg byte y , Potential registers zp byte:14 [ addpoint::idx#6 ] : zp byte:14 , reg byte a , reg byte x , reg byte y , Potential registers zp byte:15 [ addpoint::y#6 ] : zp byte:15 , reg byte a , reg byte x , reg byte y , @@ -7406,57 +7622,60 @@ Potential registers zp byte:42 [ findcol::$10 ] : zp byte:42 , reg byte a , reg Potential registers zp byte:43 [ findcol::$8 ] : zp byte:43 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [findcol] 53,338.67: zp byte:11 [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] 50,005: zp byte:10 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] 31,878.19: zp byte:9 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] 24,738.6: zp byte:12 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] 20,002: zp byte:42 [ findcol::$10 ] 20,002: zp byte:43 [ findcol::$8 ] 17,633.34: zp byte:8 [ findcol::i#12 findcol::i#1 ] 10,001: zp byte:40 [ findcol::xp#0 ] 6,250.62: zp byte:41 [ findcol::yp#0 ] 1,640.2: zp byte:38 [ findcol::y#0 ] 1,577.12: zp byte:37 [ findcol::x#0 ] -Uplift Scope [render] 2,002: zp byte:39 [ render::col#0 ] 1,668.33: zp byte:7 [ render::x#2 render::x#1 ] 185.87: zp byte:2 [ render::y#2 render::y#1 ] 102.72: zp ptr byte:3 [ render::colline#2 render::colline#1 ] 86.95: zp ptr byte:5 [ render::chrline#2 render::chrline#1 ] +Uplift Scope [findcol] 53,338.67: zp byte:9 [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] 50,005: zp byte:8 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] 31,878.19: zp byte:7 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] 24,730.55: zp byte:10 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] 20,002: zp byte:42 [ findcol::$10 ] 20,002: zp byte:43 [ findcol::$8 ] 17,633.34: zp byte:6 [ findcol::i#12 findcol::i#1 ] 10,001: zp byte:40 [ findcol::xp#0 ] 6,250.62: zp byte:41 [ findcol::yp#0 ] 1,640.2: zp byte:38 [ findcol::y#0 ] 1,577.12: zp byte:37 [ findcol::x#0 ] +Uplift Scope [render] 2,002: zp byte:39 [ render::col#0 ] 1,639.57: zp byte:5 [ render::x#2 render::x#1 ] 187.95: zp byte:2 [ render::y#2 render::y#1 ] 104.93: zp ptr byte:3 [ render::colline#2 render::colline#1 ] Uplift Scope [animate] 4: zp byte:17 [ animate::$0 ] 4: zp byte:18 [ animate::$1 ] 4: zp byte:19 [ animate::$2 ] 4: zp byte:20 [ animate::$4 ] 4: zp byte:21 [ animate::$5 ] 4: zp byte:22 [ animate::$6 ] 4: zp byte:23 [ animate::$8 ] 4: zp byte:24 [ animate::$9 ] 4: zp byte:25 [ animate::$10 ] 4: zp byte:26 [ animate::$12 ] 4: zp byte:27 [ animate::$13 ] 4: zp byte:28 [ animate::$14 ] 4: zp byte:29 [ animate::$16 ] 4: zp byte:30 [ animate::$17 ] 4: zp byte:31 [ animate::$18 ] 4: zp byte:32 [ animate::$20 ] 4: zp byte:33 [ animate::$21 ] 4: zp byte:34 [ animate::$22 ] 4: zp byte:35 [ animate::$24 ] 4: zp byte:36 [ animate::$25 ] +Uplift Scope [initscreen] 33: zp ptr byte:11 [ initscreen::screen#2 initscreen::screen#1 ] Uplift Scope [addpoint] 2: zp byte:13 [ addpoint::x#6 ] 2: zp byte:14 [ addpoint::idx#6 ] 1: zp byte:15 [ addpoint::y#6 ] 0.67: zp byte:16 [ addpoint::c#6 ] Uplift Scope [main] Uplift Scope [] -Uplift attempts [findcol] 10000/559872 (limiting to 30000) -Uplift attempts [findcol] 20000/559872 (limiting to 30000) -Uplift attempts [findcol] 30000/559872 (limiting to 30000) -Uplifting [findcol] best 1600865 combination reg byte x [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] zp byte:10 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] zp byte:9 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] zp byte:12 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] reg byte a [ findcol::$10 ] reg byte a [ findcol::$8 ] reg byte y [ findcol::i#12 findcol::i#1 ] reg byte a [ findcol::xp#0 ] reg byte x [ findcol::yp#0 ] zp byte:38 [ findcol::y#0 ] zp byte:37 [ findcol::x#0 ] -Limited combination testing to 30000 combinations of 559872 possible. -Uplifting [render] best 1594865 combination reg byte a [ render::col#0 ] zp byte:7 [ render::x#2 render::x#1 ] zp byte:2 [ render::y#2 render::y#1 ] zp ptr byte:3 [ render::colline#2 render::colline#1 ] zp ptr byte:5 [ render::chrline#2 render::chrline#1 ] -Uplifting [addpoint] best 1594798 combination reg byte a [ addpoint::x#6 ] reg byte y [ addpoint::idx#6 ] reg byte x [ addpoint::y#6 ] zp byte:16 [ addpoint::c#6 ] -Uplifting [main] best 1594798 combination -Uplifting [] best 1594798 combination -Uplifting remains [reg byte a [ animate::$0 ]] best 1594792 combination reg byte a [ animate::$0 ] -Uplifting remains [reg byte a [ animate::$1 ]] best 1594786 combination reg byte a [ animate::$1 ] -Uplifting remains [reg byte a [ animate::$2 ]] best 1594780 combination reg byte a [ animate::$2 ] -Uplifting remains [reg byte a [ animate::$4 ]] best 1594774 combination reg byte a [ animate::$4 ] -Uplifting remains [reg byte a [ animate::$5 ]] best 1594768 combination reg byte a [ animate::$5 ] -Uplifting remains [reg byte a [ animate::$6 ]] best 1594762 combination reg byte a [ animate::$6 ] -Uplifting remains [reg byte x [ animate::$8 ]] best 1594756 combination reg byte x [ animate::$8 ] -Uplifting remains [reg byte x [ animate::$9 ]] best 1594748 combination reg byte x [ animate::$9 ] -Uplifting remains [reg byte a [ animate::$10 ]] best 1594742 combination reg byte a [ animate::$10 ] -Uplifting remains [reg byte a [ animate::$12 ]] best 1594736 combination reg byte a [ animate::$12 ] -Uplifting remains [reg byte a [ animate::$13 ]] best 1594730 combination reg byte a [ animate::$13 ] -Uplifting remains [reg byte a [ animate::$14 ]] best 1594724 combination reg byte a [ animate::$14 ] -Uplifting remains [reg byte x [ animate::$16 ]] best 1594718 combination reg byte x [ animate::$16 ] -Uplifting remains [reg byte x [ animate::$17 ]] best 1594710 combination reg byte x [ animate::$17 ] -Uplifting remains [reg byte a [ animate::$18 ]] best 1594704 combination reg byte a [ animate::$18 ] -Uplifting remains [reg byte a [ animate::$20 ]] best 1594698 combination reg byte a [ animate::$20 ] -Uplifting remains [reg byte a [ animate::$21 ]] best 1594692 combination reg byte a [ animate::$21 ] -Uplifting remains [reg byte a [ animate::$22 ]] best 1594686 combination reg byte a [ animate::$22 ] -Uplifting remains [reg byte a [ animate::$24 ]] best 1594680 combination reg byte a [ animate::$24 ] -Uplifting remains [reg byte a [ animate::$25 ]] best 1594674 combination reg byte a [ animate::$25 ] +Uplift attempts [findcol] 10000/373248 (limiting to 10000) +Uplifting [findcol] best 1717550 combination reg byte x [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] zp byte:8 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] zp byte:7 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] zp byte:10 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] reg byte a [ findcol::$10 ] reg byte a [ findcol::$8 ] reg byte y [ findcol::i#12 findcol::i#1 ] reg byte x [ findcol::xp#0 ] zp byte:41 [ findcol::yp#0 ] zp byte:38 [ findcol::y#0 ] zp byte:37 [ findcol::x#0 ] +Limited combination testing to 10000 combinations of 373248 possible. +Uplifting [render] best 1711550 combination reg byte a [ render::col#0 ] zp byte:5 [ render::x#2 render::x#1 ] zp byte:2 [ render::y#2 render::y#1 ] zp ptr byte:3 [ render::colline#2 render::colline#1 ] +Uplifting [initscreen] best 1711550 combination zp ptr byte:11 [ initscreen::screen#2 initscreen::screen#1 ] +Uplifting [addpoint] best 1711483 combination reg byte a [ addpoint::x#6 ] reg byte y [ addpoint::idx#6 ] reg byte x [ addpoint::y#6 ] zp byte:16 [ addpoint::c#6 ] +Uplifting [main] best 1711483 combination +Uplifting [] best 1711483 combination +Uplifting remains [reg byte a [ animate::$0 ]] best 1711477 combination reg byte a [ animate::$0 ] +Uplifting remains [reg byte a [ animate::$1 ]] best 1711471 combination reg byte a [ animate::$1 ] +Uplifting remains [reg byte a [ animate::$2 ]] best 1711465 combination reg byte a [ animate::$2 ] +Uplifting remains [reg byte a [ animate::$4 ]] best 1711459 combination reg byte a [ animate::$4 ] +Uplifting remains [reg byte a [ animate::$5 ]] best 1711453 combination reg byte a [ animate::$5 ] +Uplifting remains [reg byte a [ animate::$6 ]] best 1711447 combination reg byte a [ animate::$6 ] +Uplifting remains [reg byte x [ animate::$8 ]] best 1711441 combination reg byte x [ animate::$8 ] +Uplifting remains [reg byte x [ animate::$9 ]] best 1711433 combination reg byte x [ animate::$9 ] +Uplifting remains [reg byte a [ animate::$10 ]] best 1711427 combination reg byte a [ animate::$10 ] +Uplifting remains [reg byte a [ animate::$12 ]] best 1711421 combination reg byte a [ animate::$12 ] +Uplifting remains [reg byte a [ animate::$13 ]] best 1711415 combination reg byte a [ animate::$13 ] +Uplifting remains [reg byte a [ animate::$14 ]] best 1711409 combination reg byte a [ animate::$14 ] +Uplifting remains [reg byte x [ animate::$16 ]] best 1711403 combination reg byte x [ animate::$16 ] +Uplifting remains [reg byte x [ animate::$17 ]] best 1711395 combination reg byte x [ animate::$17 ] +Uplifting remains [reg byte a [ animate::$18 ]] best 1711389 combination reg byte a [ animate::$18 ] +Uplifting remains [reg byte a [ animate::$20 ]] best 1711383 combination reg byte a [ animate::$20 ] +Uplifting remains [reg byte a [ animate::$21 ]] best 1711377 combination reg byte a [ animate::$21 ] +Uplifting remains [reg byte a [ animate::$22 ]] best 1711371 combination reg byte a [ animate::$22 ] +Uplifting remains [reg byte a [ animate::$24 ]] best 1711365 combination reg byte a [ animate::$24 ] +Uplifting remains [reg byte a [ animate::$25 ]] best 1711359 combination reg byte a [ animate::$25 ] Coalescing zero page register [ zp byte:2 [ render::y#2 render::y#1 ] ] with [ zp byte:16 [ addpoint::c#6 ] ] -Re-allocated ZP register from zp byte:9 to zp byte:8 -Re-allocated ZP register from zp byte:10 to zp byte:9 -Re-allocated ZP register from zp byte:12 to zp byte:10 -Re-allocated ZP register from zp byte:37 to zp byte:11 -Re-allocated ZP register from zp byte:38 to zp byte:12 +Coalescing zero page register [ zp ptr byte:3 [ render::colline#2 render::colline#1 ] ] with [ zp ptr byte:11 [ initscreen::screen#2 initscreen::screen#1 ] ] +Re-allocated ZP register from zp byte:7 to zp byte:6 +Re-allocated ZP register from zp byte:8 to zp byte:7 +Re-allocated ZP register from zp byte:10 to zp byte:8 +Re-allocated ZP register from zp byte:37 to zp byte:9 +Re-allocated ZP register from zp byte:38 to zp byte:10 +Re-allocated ZP register from zp byte:41 to zp byte:11 Removing instruction jmp BEND Removing instruction jmp main__B3 Removing instruction jmp main__B4 Removing instruction jmp main__B5 Removing instruction jmp main__B6 Removing instruction jmp main__B7 +Removing instruction jmp main__B8 Removing instruction jmp main__B1 -Removing instruction jmp main__B9 Removing instruction jmp main__B10 +Removing instruction jmp main__B11 Removing instruction jmp main__Breturn Removing instruction jmp animate__B2 Removing instruction jmp animate__B4 @@ -7476,6 +7695,8 @@ Removing instruction jmp findcol__B10 Removing instruction jmp findcol__B11 Removing instruction jmp findcol__B13 Removing instruction jmp findcol__Breturn +Removing instruction jmp initscreen__B1 +Removing instruction jmp initscreen__Breturn Removing instruction jmp addpoint__Breturn Succesful ASM optimization Pass5NextJumpElimination ASSEMBLER @@ -7488,305 +7709,291 @@ BEND: //SEG3 main main: //SEG4 [1] call addpoint param-assignment [ findcol::return#0 ] -//SEG5 [88] phi from main to addpoint +//SEG5 [92] phi from main to addpoint addpoint_from_main: -//SEG6 [88] phi (byte) addpoint::c#6 = (byte) 1 -- zpby1=coby1 +//SEG6 [92] phi (byte) addpoint::c#6 = (byte) 1 -- zpby1=coby1 lda #1 sta 2 -//SEG7 [88] phi (byte) addpoint::y#6 = (byte) 5 -- xby=coby1 +//SEG7 [92] phi (byte) addpoint::y#6 = (byte) 5 -- xby=coby1 ldx #5 -//SEG8 [88] phi (byte) addpoint::idx#6 = (byte) 0 -- yby=coby1 +//SEG8 [92] phi (byte) addpoint::idx#6 = (byte) 0 -- yby=coby1 ldy #0 -//SEG9 [88] phi (byte) addpoint::x#6 = (byte) 5 -- aby=coby1 +//SEG9 [92] phi (byte) addpoint::x#6 = (byte) 5 -- aby=coby1 lda #5 jsr addpoint //SEG10 main::@3 main__B3: //SEG11 [2] call addpoint param-assignment [ findcol::return#0 ] -//SEG12 [88] phi from main::@3 to addpoint +//SEG12 [92] phi from main::@3 to addpoint addpoint_from_B3: -//SEG13 [88] phi (byte) addpoint::c#6 = (byte) 2 -- zpby1=coby1 +//SEG13 [92] phi (byte) addpoint::c#6 = (byte) 2 -- zpby1=coby1 lda #2 sta 2 -//SEG14 [88] phi (byte) addpoint::y#6 = (byte) 8 -- xby=coby1 +//SEG14 [92] phi (byte) addpoint::y#6 = (byte) 8 -- xby=coby1 ldx #8 -//SEG15 [88] phi (byte) addpoint::idx#6 = (byte) 1 -- yby=coby1 +//SEG15 [92] phi (byte) addpoint::idx#6 = (byte) 1 -- yby=coby1 ldy #1 -//SEG16 [88] phi (byte) addpoint::x#6 = (byte) 15 -- aby=coby1 +//SEG16 [92] phi (byte) addpoint::x#6 = (byte) 15 -- aby=coby1 lda #15 jsr addpoint //SEG17 main::@4 main__B4: //SEG18 [3] call addpoint param-assignment [ findcol::return#0 ] -//SEG19 [88] phi from main::@4 to addpoint +//SEG19 [92] phi from main::@4 to addpoint addpoint_from_B4: -//SEG20 [88] phi (byte) addpoint::c#6 = (byte) 3 -- zpby1=coby1 +//SEG20 [92] phi (byte) addpoint::c#6 = (byte) 3 -- zpby1=coby1 lda #3 sta 2 -//SEG21 [88] phi (byte) addpoint::y#6 = (byte) 14 -- xby=coby1 +//SEG21 [92] phi (byte) addpoint::y#6 = (byte) 14 -- xby=coby1 ldx #14 -//SEG22 [88] phi (byte) addpoint::idx#6 = (byte) 2 -- yby=coby1 +//SEG22 [92] phi (byte) addpoint::idx#6 = (byte) 2 -- yby=coby1 ldy #2 -//SEG23 [88] phi (byte) addpoint::x#6 = (byte) 6 -- aby=coby1 +//SEG23 [92] phi (byte) addpoint::x#6 = (byte) 6 -- aby=coby1 lda #6 jsr addpoint //SEG24 main::@5 main__B5: //SEG25 [4] call addpoint param-assignment [ findcol::return#0 ] -//SEG26 [88] phi from main::@5 to addpoint +//SEG26 [92] phi from main::@5 to addpoint addpoint_from_B5: -//SEG27 [88] phi (byte) addpoint::c#6 = (byte) 4 -- zpby1=coby1 +//SEG27 [92] phi (byte) addpoint::c#6 = (byte) 4 -- zpby1=coby1 lda #4 sta 2 -//SEG28 [88] phi (byte) addpoint::y#6 = (byte) 2 -- xby=coby1 +//SEG28 [92] phi (byte) addpoint::y#6 = (byte) 2 -- xby=coby1 ldx #2 -//SEG29 [88] phi (byte) addpoint::idx#6 = (byte) 3 -- yby=coby1 +//SEG29 [92] phi (byte) addpoint::idx#6 = (byte) 3 -- yby=coby1 ldy #3 -//SEG30 [88] phi (byte) addpoint::x#6 = (byte) 34 -- aby=coby1 +//SEG30 [92] phi (byte) addpoint::x#6 = (byte) 34 -- aby=coby1 lda #34 jsr addpoint //SEG31 main::@6 main__B6: //SEG32 [5] call addpoint param-assignment [ findcol::return#0 ] -//SEG33 [88] phi from main::@6 to addpoint +//SEG33 [92] phi from main::@6 to addpoint addpoint_from_B6: -//SEG34 [88] phi (byte) addpoint::c#6 = (byte) 5 -- zpby1=coby1 +//SEG34 [92] phi (byte) addpoint::c#6 = (byte) 5 -- zpby1=coby1 lda #5 sta 2 -//SEG35 [88] phi (byte) addpoint::y#6 = (byte) 17 -- xby=coby1 +//SEG35 [92] phi (byte) addpoint::y#6 = (byte) 17 -- xby=coby1 ldx #17 -//SEG36 [88] phi (byte) addpoint::idx#6 = (byte) 4 -- yby=coby1 +//SEG36 [92] phi (byte) addpoint::idx#6 = (byte) 4 -- yby=coby1 ldy #4 -//SEG37 [88] phi (byte) addpoint::x#6 = (byte) 21 -- aby=coby1 +//SEG37 [92] phi (byte) addpoint::x#6 = (byte) 21 -- aby=coby1 lda #21 jsr addpoint //SEG38 main::@7 main__B7: //SEG39 [6] call addpoint param-assignment [ findcol::return#0 ] -//SEG40 [88] phi from main::@7 to addpoint +//SEG40 [92] phi from main::@7 to addpoint addpoint_from_B7: -//SEG41 [88] phi (byte) addpoint::c#6 = (byte) 7 -- zpby1=coby1 +//SEG41 [92] phi (byte) addpoint::c#6 = (byte) 7 -- zpby1=coby1 lda #7 sta 2 -//SEG42 [88] phi (byte) addpoint::y#6 = (byte) 22 -- xby=coby1 +//SEG42 [92] phi (byte) addpoint::y#6 = (byte) 22 -- xby=coby1 ldx #22 -//SEG43 [88] phi (byte) addpoint::idx#6 = (byte) 5 -- yby=coby1 +//SEG43 [92] phi (byte) addpoint::idx#6 = (byte) 5 -- yby=coby1 ldy #5 -//SEG44 [88] phi (byte) addpoint::x#6 = (byte) 31 -- aby=coby1 +//SEG44 [92] phi (byte) addpoint::x#6 = (byte) 31 -- aby=coby1 lda #31 jsr addpoint -//SEG45 main::@1 +//SEG45 main::@8 +main__B8: +//SEG46 [7] call initscreen param-assignment [ findcol::return#0 ] + jsr initscreen +//SEG47 main::@1 main__B1: -//SEG46 [7] call render param-assignment [ findcol::return#0 ] +//SEG48 [8] call render param-assignment [ findcol::return#0 ] jsr render -//SEG47 main::@9 -main__B9: -//SEG48 [8] call animate param-assignment [ findcol::return#0 ] - jsr animate //SEG49 main::@10 main__B10: -//SEG50 [9] if(true) goto main::@1 [ findcol::return#0 ] -- true_then_la1 +//SEG50 [9] call animate param-assignment [ findcol::return#0 ] + jsr animate +//SEG51 main::@11 +main__B11: +//SEG52 [10] if(true) goto main::@1 [ findcol::return#0 ] -- true_then_la1 jmp main__B1 -//SEG51 main::@return +//SEG53 main::@return main__Breturn: -//SEG52 [10] return [ findcol::return#0 ] +//SEG54 [11] return [ findcol::return#0 ] rts -//SEG53 animate +//SEG55 animate animate: -//SEG54 [11] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] -- aby=_star_cowo1 +//SEG56 [12] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] -- aby=_star_cowo1 lda 4096 -//SEG55 [12] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] -- aby=aby_plus_1 +//SEG57 [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] -- aby=aby_plus_1 clc adc #1 -//SEG56 [13] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG58 [14] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] -- _star_cowo1=aby sta 4096 -//SEG57 [14] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] -- aby=_star_cowo1 +//SEG59 [15] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] -- aby=_star_cowo1 lda 4096 -//SEG58 [15] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG60 [16] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #40 beq animate__B1 -//SEG59 animate::@2 +//SEG61 animate::@2 animate__B2: -//SEG60 [16] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] -- aby=_star_cowo1 +//SEG62 [17] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] -- aby=_star_cowo1 lda 4352 -//SEG61 [17] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] -- aby=aby_plus_1 +//SEG63 [18] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] -- aby=aby_plus_1 clc adc #1 -//SEG62 [18] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG64 [19] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] -- _star_cowo1=aby sta 4352 -//SEG63 [19] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] -- aby=_star_cowo1 +//SEG65 [20] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] -- aby=_star_cowo1 lda 4352 -//SEG64 [20] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG66 [21] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #25 beq animate__B3 -//SEG65 animate::@4 +//SEG67 animate::@4 animate__B4: -//SEG66 [21] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] -- xby=_star_cowo1 +//SEG68 [22] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] -- xby=_star_cowo1 ldx 4097 -//SEG67 [22] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] -- xby=xby_minus_1 +//SEG69 [23] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] -- xby=xby_minus_1 dex -//SEG68 [23] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] -- _star_cowo1=xby +//SEG70 [24] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] -- _star_cowo1=xby stx 4097 -//SEG69 [24] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] -- aby=_star_cowo1 +//SEG71 [25] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] -- aby=_star_cowo1 lda 4097 -//SEG70 [25] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG72 [26] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #255 beq animate__B5 -//SEG71 animate::@6 +//SEG73 animate::@6 animate__B6: -//SEG72 [26] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] -- aby=_star_cowo1 +//SEG74 [27] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] -- aby=_star_cowo1 lda 4354 -//SEG73 [27] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] -- aby=aby_plus_1 +//SEG75 [28] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] -- aby=aby_plus_1 clc adc #1 -//SEG74 [28] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG76 [29] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] -- _star_cowo1=aby sta 4354 -//SEG75 [29] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] -- aby=_star_cowo1 +//SEG77 [30] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] -- aby=_star_cowo1 lda 4354 -//SEG76 [30] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG78 [31] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #25 beq animate__B7 -//SEG77 animate::@8 +//SEG79 animate::@8 animate__B8: -//SEG78 [31] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] -- xby=_star_cowo1 +//SEG80 [32] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] -- xby=_star_cowo1 ldx 4355 -//SEG79 [32] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] -- xby=xby_minus_1 +//SEG81 [33] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] -- xby=xby_minus_1 dex -//SEG80 [33] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] -- _star_cowo1=xby +//SEG82 [34] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] -- _star_cowo1=xby stx 4355 -//SEG81 [34] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] -- aby=_star_cowo1 +//SEG83 [35] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] -- aby=_star_cowo1 lda 4355 -//SEG82 [35] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG84 [36] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #255 beq animate__B9 -//SEG83 animate::@return +//SEG85 animate::@return animate__Breturn: -//SEG84 [36] return [ findcol::return#0 ] +//SEG86 [37] return [ findcol::return#0 ] rts -//SEG85 animate::@9 +//SEG87 animate::@9 animate__B9: -//SEG86 [37] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG88 [38] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #25 sta 4355 -//SEG87 [38] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] -- aby=_star_cowo1 +//SEG89 [39] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] -- aby=_star_cowo1 lda 4099 -//SEG88 [39] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] -- aby=aby_plus_coby1 +//SEG90 [40] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] -- aby=aby_plus_coby1 clc adc #7 -//SEG89 [40] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG91 [41] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] -- _star_cowo1=aby sta 4099 -//SEG90 [41] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] -- aby=_star_cowo1 +//SEG92 [42] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] -- aby=_star_cowo1 lda 4099 -//SEG91 [42] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] -- aby_ge_coby1_then_la1 +//SEG93 [43] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] -- aby_ge_coby1_then_la1 cmp #40 bcs animate__B11 jmp animate__Breturn -//SEG92 animate::@11 +//SEG94 animate::@11 animate__B11: -//SEG93 [43] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] -- aby=_star_cowo1 +//SEG95 [44] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] -- aby=_star_cowo1 lda 4099 -//SEG94 [44] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] -- aby=aby_minus_coby1 +//SEG96 [45] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] -- aby=aby_minus_coby1 sec sbc #40 -//SEG95 [45] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG97 [46] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] -- _star_cowo1=aby sta 4099 jmp animate__Breturn -//SEG96 animate::@7 +//SEG98 animate::@7 animate__B7: -//SEG97 [46] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG99 [47] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #0 sta 4354 jmp animate__B8 -//SEG98 animate::@5 +//SEG100 animate::@5 animate__B5: -//SEG99 [47] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG101 [48] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #40 sta 4097 jmp animate__B6 -//SEG100 animate::@3 +//SEG102 animate::@3 animate__B3: -//SEG101 [48] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG103 [49] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #0 sta 4352 jmp animate__B4 -//SEG102 animate::@1 +//SEG104 animate::@1 animate__B1: -//SEG103 [49] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG105 [50] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #0 sta 4096 jmp animate__B2 -//SEG104 render +//SEG106 render render: -//SEG105 [50] phi from render to render::@1 +//SEG107 [51] phi from render to render::@1 render__B1_from_render: -//SEG106 [50] phi (byte*) render::chrline#2 = (word) 1024 -- zpptrby1=cowo1 - lda #<1024 - sta 5 - lda #>1024 - sta 5+1 -//SEG107 [50] phi (byte*) render::colline#2 = (word) 55296 -- zpptrby1=cowo1 +//SEG108 [51] phi (byte*) render::colline#2 = (word) 55296 -- zpptrby1=cowo1 lda #<55296 sta 3 lda #>55296 sta 3+1 -//SEG108 [50] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 +//SEG109 [51] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 lda #0 sta 2 jmp render__B1 -//SEG109 [50] phi from render::@3 to render::@1 +//SEG110 [51] phi from render::@3 to render::@1 render__B1_from_B3: -//SEG110 [50] phi (byte*) render::chrline#2 = (byte*) render::chrline#1 -- register_copy -//SEG111 [50] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy -//SEG112 [50] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy +//SEG111 [51] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy +//SEG112 [51] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy //SEG113 render::@1 render__B1: -//SEG114 [51] phi from render::@1 to render::@2 +//SEG114 [52] phi from render::@1 to render::@2 render__B2_from_B1: -//SEG115 [51] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 +//SEG115 [52] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 lda #0 - sta 7 + sta 5 jmp render__B2 -//SEG116 [51] phi from render::@5 to render::@2 +//SEG116 [52] phi from render::@5 to render::@2 render__B2_from_B5: -//SEG117 [51] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy +//SEG117 [52] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy //SEG118 render::@2 render__B2: -//SEG119 [52] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 ] -- zpby1=zpby2 - lda 7 - sta 11 -//SEG120 [53] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] -- zpby1=zpby2 +//SEG119 [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 ] -- zpby1=zpby2 + lda 5 + sta 9 +//SEG120 [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] -- zpby1=zpby2 lda 2 - sta 12 -//SEG121 [54] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] + sta 10 +//SEG121 [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] jsr findcol //SEG122 render::@5 render__B5: -//SEG123 [55] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 render::chrline#2 ] -- aby=zpby1 - lda 10 -//SEG124 [56] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpptrby1_staridx_zpby1=aby - ldy 7 +//SEG123 [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 ] -- aby=zpby1 + lda 8 +//SEG124 [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] -- zpptrby1_staridx_zpby1=aby + ldy 5 sta (3),y -//SEG125 [57] *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) 230 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpptrby1_staridx_zpby1=coby1 - lda #230 - ldy 7 - sta (5),y -//SEG126 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpby1=_inc_zpby1 - inc 7 -//SEG127 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpby1_lt_coby1_then_la1 - lda 7 +//SEG125 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 ] -- zpby1=_inc_zpby1 + inc 5 +//SEG126 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 ] -- zpby1_lt_coby1_then_la1 + lda 5 cmp #40 bcc render__B2_from_B5 -//SEG128 render::@3 +//SEG127 render::@3 render__B3: -//SEG129 [60] (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 [ render::chrline#1 render::y#2 findcol::return#0 render::colline#2 ] -- zpptrby1=zpptrby1_plus_coby1 - lda 5 - clc - adc #40 - sta 5 - bcc !+ - inc 5+1 -!: -//SEG130 [61] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::chrline#1 render::y#2 findcol::return#0 ] -- zpptrby1=zpptrby1_plus_coby1 +//SEG128 [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 findcol::return#0 ] -- zpptrby1=zpptrby1_plus_coby1 lda 3 clc adc #40 @@ -7794,166 +8001,208 @@ render__B3: bcc !+ inc 3+1 !: -//SEG131 [62] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 render::chrline#1 findcol::return#0 ] -- zpby1=_inc_zpby1 +//SEG129 [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 findcol::return#0 ] -- zpby1=_inc_zpby1 inc 2 -//SEG132 [63] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 render::chrline#1 findcol::return#0 ] -- zpby1_lt_coby1_then_la1 +//SEG130 [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 findcol::return#0 ] -- zpby1_lt_coby1_then_la1 lda 2 cmp #25 bcc render__B1_from_B3 -//SEG133 render::@return +//SEG131 render::@return render__Breturn: -//SEG134 [64] return [ findcol::return#0 ] +//SEG132 [63] return [ findcol::return#0 ] rts -//SEG135 findcol +//SEG133 findcol findcol: -//SEG136 [65] phi from findcol to findcol::@1 +//SEG134 [64] phi from findcol to findcol::@1 findcol__B1_from_findcol: -//SEG137 [65] phi (byte) findcol::mincol#11 = (byte) 0 -- zpby1=coby1 +//SEG135 [64] phi (byte) findcol::mincol#11 = (byte) 0 -- zpby1=coby1 lda #0 - sta 10 -//SEG138 [65] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 - lda #255 sta 8 -//SEG139 [65] phi (byte) findcol::i#12 = (byte) 0 -- yby=coby1 +//SEG136 [64] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 + lda #255 + sta 6 +//SEG137 [64] phi (byte) findcol::i#12 = (byte) 0 -- yby=coby1 ldy #0 jmp findcol__B1 -//SEG140 [65] phi from findcol::@13 to findcol::@1 +//SEG138 [64] phi from findcol::@13 to findcol::@1 findcol__B1_from_B13: -//SEG141 [65] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy -//SEG142 [65] phi (byte) findcol::mindiff#10 = (byte) findcol::mindiff#11 -- register_copy -//SEG143 [65] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy -//SEG144 findcol::@1 +//SEG139 [64] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy +//SEG140 [64] phi (byte) findcol::mindiff#10 = (byte) findcol::mindiff#11 -- register_copy +//SEG141 [64] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy +//SEG142 findcol::@1 findcol__B1: -//SEG145 [66] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] -- aby=cowo1_staridx_yby - lda 4096,y -//SEG146 [67] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- xby=cowo1_staridx_yby - ldx 4352,y -//SEG147 [68] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_aby_then_la1 - cmp 11 +//SEG143 [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] -- xby=cowo1_staridx_yby + ldx 4096,y +//SEG144 [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_yby + lda 4352,y + sta 11 +//SEG145 [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_xby_then_la1 + cpx 9 beq findcol__B2 -//SEG148 findcol::@3 +//SEG146 findcol::@3 findcol__B3: -//SEG149 [69] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_aby_then_la1 - cmp 11 +//SEG147 [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_xby_then_la1 + cpx 9 bcs findcol__B6 -//SEG150 findcol::@7 +//SEG148 findcol::@7 findcol__B7: -//SEG151 [70] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_aby - eor #255 - sec - adc 11 - sta 9 -//SEG152 [71] phi from findcol::@7 to findcol::@8 -findcol__B8_from_B7: -//SEG153 [71] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy -//SEG154 findcol::@8 -findcol__B8: -//SEG155 [72] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_xby_then_la1 - cpx 12 - bcs findcol__B9 -//SEG156 findcol::@10 -findcol__B10: -//SEG157 [73] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_minus_xby +//SEG149 [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_xby stx 255 - lda 12 + lda 9 sec sbc 255 -//SEG158 [74] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] -- xby=zpby1_plus_aby - clc - adc 9 - tax -//SEG159 [75] phi from findcol::@10 to findcol::@11 -findcol__B11_from_B10: -//SEG160 [75] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy -//SEG161 findcol::@11 -findcol__B11: -//SEG162 [76] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] -- xby_lt_zpby1_then_la1 - cpx 8 - bcc findcol__B12 -//SEG163 [77] phi from findcol::@11 to findcol::@13 -findcol__B13_from_B11: -//SEG164 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::mindiff#10 -- register_copy -//SEG165 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#11 -- register_copy -//SEG166 findcol::@13 -findcol__B13: -//SEG167 [78] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- yby=_inc_yby - iny -//SEG168 [79] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- yby_lt_coby1_then_la1 - cpy #6 - bcc findcol__B1_from_B13 -//SEG169 [80] phi from findcol::@13 to findcol::@return -findcol__Breturn_from_B13: -//SEG170 [80] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy - jmp findcol__Breturn -//SEG171 [80] phi from findcol::@2 to findcol::@return -findcol__Breturn_from_B2: -//SEG172 [80] phi (byte) findcol::return#0 = (byte) 0 -- zpby1=coby1 - lda #0 - sta 10 -//SEG173 findcol::@return -findcol__Breturn: -//SEG174 [81] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] - rts -//SEG175 findcol::@12 -findcol__B12: -//SEG176 [82] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] -- zpby1=cowo1_staridx_yby - lda 4608,y - sta 10 -//SEG177 [83] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] -- zpby1=xby - stx 8 -//SEG178 [77] phi from findcol::@12 to findcol::@13 -findcol__B13_from_B12: -//SEG179 [77] phi (byte) findcol::mindiff#11 = (byte~) findcol::diff#13 -- register_copy -//SEG180 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy - jmp findcol__B13 -//SEG181 findcol::@9 -findcol__B9: -//SEG182 [84] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] -- aby=xby_minus_zpby1 - txa - sec - sbc 12 -//SEG183 [85] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] -- xby=zpby1_plus_aby - clc - adc 9 - tax -//SEG184 [75] phi from findcol::@9 to findcol::@11 -findcol__B11_from_B9: -//SEG185 [75] phi (byte) findcol::diff#6 = (byte) findcol::diff#2 -- register_copy - jmp findcol__B11 -//SEG186 findcol::@6 -findcol__B6: -//SEG187 [86] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=aby_minus_zpby2 + sta 7 +//SEG150 [70] phi from findcol::@7 to findcol::@8 +findcol__B8_from_B7: +//SEG151 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy +//SEG152 findcol::@8 +findcol__B8: +//SEG153 [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 + lda 10 + cmp 11 + bcc findcol__B9 +//SEG154 findcol::@10 +findcol__B10: +//SEG155 [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_minus_zpby2 + lda 10 sec sbc 11 - sta 9 -//SEG188 [71] phi from findcol::@6 to findcol::@8 +//SEG156 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] -- xby=zpby1_plus_aby + clc + adc 7 + tax +//SEG157 [74] phi from findcol::@10 to findcol::@11 +findcol__B11_from_B10: +//SEG158 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy +//SEG159 findcol::@11 +findcol__B11: +//SEG160 [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] -- xby_lt_zpby1_then_la1 + cpx 6 + bcc findcol__B12 +//SEG161 [76] phi from findcol::@11 to findcol::@13 +findcol__B13_from_B11: +//SEG162 [76] phi (byte) findcol::mindiff#11 = (byte) findcol::mindiff#10 -- register_copy +//SEG163 [76] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#11 -- register_copy +//SEG164 findcol::@13 +findcol__B13: +//SEG165 [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- yby=_inc_yby + iny +//SEG166 [78] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- yby_lt_coby1_then_la1 + cpy #6 + bcc findcol__B1_from_B13 +//SEG167 [79] phi from findcol::@13 to findcol::@return +findcol__Breturn_from_B13: +//SEG168 [79] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy + jmp findcol__Breturn +//SEG169 [79] phi from findcol::@2 to findcol::@return +findcol__Breturn_from_B2: +//SEG170 [79] phi (byte) findcol::return#0 = (byte) 0 -- zpby1=coby1 + lda #0 + sta 8 +//SEG171 findcol::@return +findcol__Breturn: +//SEG172 [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] + rts +//SEG173 findcol::@12 +findcol__B12: +//SEG174 [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] -- zpby1=cowo1_staridx_yby + lda 4608,y + sta 8 +//SEG175 [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] -- zpby1=xby + stx 6 +//SEG176 [76] phi from findcol::@12 to findcol::@13 +findcol__B13_from_B12: +//SEG177 [76] phi (byte) findcol::mindiff#11 = (byte~) findcol::diff#13 -- register_copy +//SEG178 [76] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy + jmp findcol__B13 +//SEG179 findcol::@9 +findcol__B9: +//SEG180 [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] -- aby=zpby1_minus_zpby2 + lda 11 + sec + sbc 10 +//SEG181 [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] -- xby=zpby1_plus_aby + clc + adc 7 + tax +//SEG182 [74] phi from findcol::@9 to findcol::@11 +findcol__B11_from_B9: +//SEG183 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#2 -- register_copy + jmp findcol__B11 +//SEG184 findcol::@6 +findcol__B6: +//SEG185 [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=xby_minus_zpby2 + txa + sec + sbc 9 + sta 7 +//SEG186 [70] phi from findcol::@6 to findcol::@8 findcol__B8_from_B6: -//SEG189 [71] phi (byte) findcol::diff#4 = (byte) findcol::diff#0 -- register_copy +//SEG187 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#0 -- register_copy jmp findcol__B8 -//SEG190 findcol::@2 +//SEG188 findcol::@2 findcol__B2: -//SEG191 [87] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_xby_then_la1 - cpx 12 +//SEG189 [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 + lda 10 + cmp 11 beq findcol__Breturn_from_B2 jmp findcol__B3 -//SEG192 addpoint +//SEG190 initscreen +initscreen: +//SEG191 [87] phi from initscreen to initscreen::@1 +initscreen__B1_from_initscreen: +//SEG192 [87] phi (byte*) initscreen::screen#2 = (word) 1024 -- zpptrby1=cowo1 + lda #<1024 + sta 3 + lda #>1024 + sta 3+1 + jmp initscreen__B1 +//SEG193 [87] phi from initscreen::@1 to initscreen::@1 +initscreen__B1_from_B1: +//SEG194 [87] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 -- register_copy +//SEG195 initscreen::@1 +initscreen__B1: +//SEG196 [88] *((byte*) initscreen::screen#2) ← (byte) 230 [ findcol::return#0 initscreen::screen#2 ] -- _star_zpptrby1=coby1 + ldy #0 + lda #230 + sta (3),y +//SEG197 [89] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ findcol::return#0 initscreen::screen#1 ] -- zpptrby1=_inc_zpptrby1 + inc 3 + bne !+ + inc 3+1 +!: +//SEG198 [90] if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 [ findcol::return#0 initscreen::screen#1 ] -- zpptrby1_lt_cowo1_then_la1 + lda 3+1 + cmp #>2048 + bcc initscreen__B1_from_B1 + bne !+ + lda 3 + cmp #<2048 + bcc initscreen__B1_from_B1 +!: +//SEG199 initscreen::@return +initscreen__Breturn: +//SEG200 [91] return [ findcol::return#0 ] + rts +//SEG201 addpoint addpoint: -//SEG193 [89] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_yby=aby +//SEG202 [93] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_yby=aby sta 4096,y -//SEG194 [90] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] -- cowo1_staridx_yby=xby +//SEG203 [94] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] -- cowo1_staridx_yby=xby txa sta 4352,y -//SEG195 [91] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] -- cowo1_staridx_yby=zpby1 +//SEG204 [95] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] -- cowo1_staridx_yby=zpby1 lda 2 sta 4608,y -//SEG196 addpoint::@return +//SEG205 addpoint::@return addpoint__Breturn: -//SEG197 [92] return [ findcol::return#0 ] +//SEG206 [96] return [ findcol::return#0 ] rts Removing instruction jmp render__B1 Removing instruction jmp render__B2 Removing instruction jmp findcol__B1 +Removing instruction jmp initscreen__B1 Succesful ASM optimization Pass5NextJumpElimination ASSEMBLER //SEG0 @BEGIN @@ -7965,303 +8214,289 @@ BEND: //SEG3 main main: //SEG4 [1] call addpoint param-assignment [ findcol::return#0 ] -//SEG5 [88] phi from main to addpoint +//SEG5 [92] phi from main to addpoint addpoint_from_main: -//SEG6 [88] phi (byte) addpoint::c#6 = (byte) 1 -- zpby1=coby1 +//SEG6 [92] phi (byte) addpoint::c#6 = (byte) 1 -- zpby1=coby1 lda #1 sta 2 -//SEG7 [88] phi (byte) addpoint::y#6 = (byte) 5 -- xby=coby1 +//SEG7 [92] phi (byte) addpoint::y#6 = (byte) 5 -- xby=coby1 ldx #5 -//SEG8 [88] phi (byte) addpoint::idx#6 = (byte) 0 -- yby=coby1 +//SEG8 [92] phi (byte) addpoint::idx#6 = (byte) 0 -- yby=coby1 ldy #0 -//SEG9 [88] phi (byte) addpoint::x#6 = (byte) 5 -- aby=coby1 +//SEG9 [92] phi (byte) addpoint::x#6 = (byte) 5 -- aby=coby1 lda #5 jsr addpoint //SEG10 main::@3 main__B3: //SEG11 [2] call addpoint param-assignment [ findcol::return#0 ] -//SEG12 [88] phi from main::@3 to addpoint +//SEG12 [92] phi from main::@3 to addpoint addpoint_from_B3: -//SEG13 [88] phi (byte) addpoint::c#6 = (byte) 2 -- zpby1=coby1 +//SEG13 [92] phi (byte) addpoint::c#6 = (byte) 2 -- zpby1=coby1 lda #2 sta 2 -//SEG14 [88] phi (byte) addpoint::y#6 = (byte) 8 -- xby=coby1 +//SEG14 [92] phi (byte) addpoint::y#6 = (byte) 8 -- xby=coby1 ldx #8 -//SEG15 [88] phi (byte) addpoint::idx#6 = (byte) 1 -- yby=coby1 +//SEG15 [92] phi (byte) addpoint::idx#6 = (byte) 1 -- yby=coby1 ldy #1 -//SEG16 [88] phi (byte) addpoint::x#6 = (byte) 15 -- aby=coby1 +//SEG16 [92] phi (byte) addpoint::x#6 = (byte) 15 -- aby=coby1 lda #15 jsr addpoint //SEG17 main::@4 main__B4: //SEG18 [3] call addpoint param-assignment [ findcol::return#0 ] -//SEG19 [88] phi from main::@4 to addpoint +//SEG19 [92] phi from main::@4 to addpoint addpoint_from_B4: -//SEG20 [88] phi (byte) addpoint::c#6 = (byte) 3 -- zpby1=coby1 +//SEG20 [92] phi (byte) addpoint::c#6 = (byte) 3 -- zpby1=coby1 lda #3 sta 2 -//SEG21 [88] phi (byte) addpoint::y#6 = (byte) 14 -- xby=coby1 +//SEG21 [92] phi (byte) addpoint::y#6 = (byte) 14 -- xby=coby1 ldx #14 -//SEG22 [88] phi (byte) addpoint::idx#6 = (byte) 2 -- yby=coby1 +//SEG22 [92] phi (byte) addpoint::idx#6 = (byte) 2 -- yby=coby1 ldy #2 -//SEG23 [88] phi (byte) addpoint::x#6 = (byte) 6 -- aby=coby1 +//SEG23 [92] phi (byte) addpoint::x#6 = (byte) 6 -- aby=coby1 lda #6 jsr addpoint //SEG24 main::@5 main__B5: //SEG25 [4] call addpoint param-assignment [ findcol::return#0 ] -//SEG26 [88] phi from main::@5 to addpoint +//SEG26 [92] phi from main::@5 to addpoint addpoint_from_B5: -//SEG27 [88] phi (byte) addpoint::c#6 = (byte) 4 -- zpby1=coby1 +//SEG27 [92] phi (byte) addpoint::c#6 = (byte) 4 -- zpby1=coby1 lda #4 sta 2 -//SEG28 [88] phi (byte) addpoint::y#6 = (byte) 2 -- xby=coby1 +//SEG28 [92] phi (byte) addpoint::y#6 = (byte) 2 -- xby=coby1 ldx #2 -//SEG29 [88] phi (byte) addpoint::idx#6 = (byte) 3 -- yby=coby1 +//SEG29 [92] phi (byte) addpoint::idx#6 = (byte) 3 -- yby=coby1 ldy #3 -//SEG30 [88] phi (byte) addpoint::x#6 = (byte) 34 -- aby=coby1 +//SEG30 [92] phi (byte) addpoint::x#6 = (byte) 34 -- aby=coby1 lda #34 jsr addpoint //SEG31 main::@6 main__B6: //SEG32 [5] call addpoint param-assignment [ findcol::return#0 ] -//SEG33 [88] phi from main::@6 to addpoint +//SEG33 [92] phi from main::@6 to addpoint addpoint_from_B6: -//SEG34 [88] phi (byte) addpoint::c#6 = (byte) 5 -- zpby1=coby1 +//SEG34 [92] phi (byte) addpoint::c#6 = (byte) 5 -- zpby1=coby1 lda #5 sta 2 -//SEG35 [88] phi (byte) addpoint::y#6 = (byte) 17 -- xby=coby1 +//SEG35 [92] phi (byte) addpoint::y#6 = (byte) 17 -- xby=coby1 ldx #17 -//SEG36 [88] phi (byte) addpoint::idx#6 = (byte) 4 -- yby=coby1 +//SEG36 [92] phi (byte) addpoint::idx#6 = (byte) 4 -- yby=coby1 ldy #4 -//SEG37 [88] phi (byte) addpoint::x#6 = (byte) 21 -- aby=coby1 +//SEG37 [92] phi (byte) addpoint::x#6 = (byte) 21 -- aby=coby1 lda #21 jsr addpoint //SEG38 main::@7 main__B7: //SEG39 [6] call addpoint param-assignment [ findcol::return#0 ] -//SEG40 [88] phi from main::@7 to addpoint +//SEG40 [92] phi from main::@7 to addpoint addpoint_from_B7: -//SEG41 [88] phi (byte) addpoint::c#6 = (byte) 7 -- zpby1=coby1 +//SEG41 [92] phi (byte) addpoint::c#6 = (byte) 7 -- zpby1=coby1 lda #7 sta 2 -//SEG42 [88] phi (byte) addpoint::y#6 = (byte) 22 -- xby=coby1 +//SEG42 [92] phi (byte) addpoint::y#6 = (byte) 22 -- xby=coby1 ldx #22 -//SEG43 [88] phi (byte) addpoint::idx#6 = (byte) 5 -- yby=coby1 +//SEG43 [92] phi (byte) addpoint::idx#6 = (byte) 5 -- yby=coby1 ldy #5 -//SEG44 [88] phi (byte) addpoint::x#6 = (byte) 31 -- aby=coby1 +//SEG44 [92] phi (byte) addpoint::x#6 = (byte) 31 -- aby=coby1 lda #31 jsr addpoint -//SEG45 main::@1 +//SEG45 main::@8 +main__B8: +//SEG46 [7] call initscreen param-assignment [ findcol::return#0 ] + jsr initscreen +//SEG47 main::@1 main__B1: -//SEG46 [7] call render param-assignment [ findcol::return#0 ] +//SEG48 [8] call render param-assignment [ findcol::return#0 ] jsr render -//SEG47 main::@9 -main__B9: -//SEG48 [8] call animate param-assignment [ findcol::return#0 ] - jsr animate //SEG49 main::@10 main__B10: -//SEG50 [9] if(true) goto main::@1 [ findcol::return#0 ] -- true_then_la1 +//SEG50 [9] call animate param-assignment [ findcol::return#0 ] + jsr animate +//SEG51 main::@11 +main__B11: +//SEG52 [10] if(true) goto main::@1 [ findcol::return#0 ] -- true_then_la1 jmp main__B1 -//SEG51 main::@return +//SEG53 main::@return main__Breturn: -//SEG52 [10] return [ findcol::return#0 ] +//SEG54 [11] return [ findcol::return#0 ] rts -//SEG53 animate +//SEG55 animate animate: -//SEG54 [11] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] -- aby=_star_cowo1 +//SEG56 [12] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] -- aby=_star_cowo1 lda 4096 -//SEG55 [12] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] -- aby=aby_plus_1 +//SEG57 [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] -- aby=aby_plus_1 clc adc #1 -//SEG56 [13] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG58 [14] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] -- _star_cowo1=aby sta 4096 -//SEG57 [14] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] -- aby=_star_cowo1 +//SEG59 [15] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] -- aby=_star_cowo1 lda 4096 -//SEG58 [15] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG60 [16] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #40 beq animate__B1 -//SEG59 animate::@2 +//SEG61 animate::@2 animate__B2: -//SEG60 [16] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] -- aby=_star_cowo1 +//SEG62 [17] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] -- aby=_star_cowo1 lda 4352 -//SEG61 [17] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] -- aby=aby_plus_1 +//SEG63 [18] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] -- aby=aby_plus_1 clc adc #1 -//SEG62 [18] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG64 [19] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] -- _star_cowo1=aby sta 4352 -//SEG63 [19] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] -- aby=_star_cowo1 +//SEG65 [20] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] -- aby=_star_cowo1 lda 4352 -//SEG64 [20] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG66 [21] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #25 beq animate__B3 -//SEG65 animate::@4 +//SEG67 animate::@4 animate__B4: -//SEG66 [21] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] -- xby=_star_cowo1 +//SEG68 [22] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] -- xby=_star_cowo1 ldx 4097 -//SEG67 [22] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] -- xby=xby_minus_1 +//SEG69 [23] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] -- xby=xby_minus_1 dex -//SEG68 [23] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] -- _star_cowo1=xby +//SEG70 [24] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] -- _star_cowo1=xby stx 4097 -//SEG69 [24] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] -- aby=_star_cowo1 +//SEG71 [25] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] -- aby=_star_cowo1 lda 4097 -//SEG70 [25] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG72 [26] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #255 beq animate__B5 -//SEG71 animate::@6 +//SEG73 animate::@6 animate__B6: -//SEG72 [26] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] -- aby=_star_cowo1 +//SEG74 [27] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] -- aby=_star_cowo1 lda 4354 -//SEG73 [27] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] -- aby=aby_plus_1 +//SEG75 [28] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] -- aby=aby_plus_1 clc adc #1 -//SEG74 [28] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG76 [29] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] -- _star_cowo1=aby sta 4354 -//SEG75 [29] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] -- aby=_star_cowo1 +//SEG77 [30] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] -- aby=_star_cowo1 lda 4354 -//SEG76 [30] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG78 [31] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #25 beq animate__B7 -//SEG77 animate::@8 +//SEG79 animate::@8 animate__B8: -//SEG78 [31] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] -- xby=_star_cowo1 +//SEG80 [32] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] -- xby=_star_cowo1 ldx 4355 -//SEG79 [32] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] -- xby=xby_minus_1 +//SEG81 [33] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] -- xby=xby_minus_1 dex -//SEG80 [33] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] -- _star_cowo1=xby +//SEG82 [34] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] -- _star_cowo1=xby stx 4355 -//SEG81 [34] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] -- aby=_star_cowo1 +//SEG83 [35] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] -- aby=_star_cowo1 lda 4355 -//SEG82 [35] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG84 [36] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #255 beq animate__B9 -//SEG83 animate::@return +//SEG85 animate::@return animate__Breturn: -//SEG84 [36] return [ findcol::return#0 ] +//SEG86 [37] return [ findcol::return#0 ] rts -//SEG85 animate::@9 +//SEG87 animate::@9 animate__B9: -//SEG86 [37] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG88 [38] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #25 sta 4355 -//SEG87 [38] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] -- aby=_star_cowo1 +//SEG89 [39] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] -- aby=_star_cowo1 lda 4099 -//SEG88 [39] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] -- aby=aby_plus_coby1 +//SEG90 [40] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] -- aby=aby_plus_coby1 clc adc #7 -//SEG89 [40] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG91 [41] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] -- _star_cowo1=aby sta 4099 -//SEG90 [41] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] -- aby=_star_cowo1 +//SEG92 [42] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] -- aby=_star_cowo1 lda 4099 -//SEG91 [42] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] -- aby_ge_coby1_then_la1 +//SEG93 [43] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] -- aby_ge_coby1_then_la1 cmp #40 bcs animate__B11 jmp animate__Breturn -//SEG92 animate::@11 +//SEG94 animate::@11 animate__B11: -//SEG93 [43] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] -- aby=_star_cowo1 +//SEG95 [44] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] -- aby=_star_cowo1 lda 4099 -//SEG94 [44] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] -- aby=aby_minus_coby1 +//SEG96 [45] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] -- aby=aby_minus_coby1 sec sbc #40 -//SEG95 [45] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG97 [46] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] -- _star_cowo1=aby sta 4099 jmp animate__Breturn -//SEG96 animate::@7 +//SEG98 animate::@7 animate__B7: -//SEG97 [46] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG99 [47] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #0 sta 4354 jmp animate__B8 -//SEG98 animate::@5 +//SEG100 animate::@5 animate__B5: -//SEG99 [47] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG101 [48] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #40 sta 4097 jmp animate__B6 -//SEG100 animate::@3 +//SEG102 animate::@3 animate__B3: -//SEG101 [48] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG103 [49] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #0 sta 4352 jmp animate__B4 -//SEG102 animate::@1 +//SEG104 animate::@1 animate__B1: -//SEG103 [49] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG105 [50] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #0 sta 4096 jmp animate__B2 -//SEG104 render +//SEG106 render render: -//SEG105 [50] phi from render to render::@1 +//SEG107 [51] phi from render to render::@1 render__B1_from_render: -//SEG106 [50] phi (byte*) render::chrline#2 = (word) 1024 -- zpptrby1=cowo1 - lda #<1024 - sta 5 - lda #>1024 - sta 5+1 -//SEG107 [50] phi (byte*) render::colline#2 = (word) 55296 -- zpptrby1=cowo1 +//SEG108 [51] phi (byte*) render::colline#2 = (word) 55296 -- zpptrby1=cowo1 lda #<55296 sta 3 lda #>55296 sta 3+1 -//SEG108 [50] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 +//SEG109 [51] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 lda #0 sta 2 -//SEG109 [50] phi from render::@3 to render::@1 +//SEG110 [51] phi from render::@3 to render::@1 render__B1_from_B3: -//SEG110 [50] phi (byte*) render::chrline#2 = (byte*) render::chrline#1 -- register_copy -//SEG111 [50] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy -//SEG112 [50] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy +//SEG111 [51] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy +//SEG112 [51] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy //SEG113 render::@1 render__B1: -//SEG114 [51] phi from render::@1 to render::@2 +//SEG114 [52] phi from render::@1 to render::@2 render__B2_from_B1: -//SEG115 [51] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 +//SEG115 [52] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 lda #0 - sta 7 -//SEG116 [51] phi from render::@5 to render::@2 + sta 5 +//SEG116 [52] phi from render::@5 to render::@2 render__B2_from_B5: -//SEG117 [51] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy +//SEG117 [52] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy //SEG118 render::@2 render__B2: -//SEG119 [52] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 ] -- zpby1=zpby2 - lda 7 - sta 11 -//SEG120 [53] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] -- zpby1=zpby2 +//SEG119 [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 ] -- zpby1=zpby2 + lda 5 + sta 9 +//SEG120 [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] -- zpby1=zpby2 lda 2 - sta 12 -//SEG121 [54] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] + sta 10 +//SEG121 [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] jsr findcol //SEG122 render::@5 render__B5: -//SEG123 [55] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 render::chrline#2 ] -- aby=zpby1 - lda 10 -//SEG124 [56] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpptrby1_staridx_zpby1=aby - ldy 7 +//SEG123 [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 ] -- aby=zpby1 + lda 8 +//SEG124 [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] -- zpptrby1_staridx_zpby1=aby + ldy 5 sta (3),y -//SEG125 [57] *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) 230 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpptrby1_staridx_zpby1=coby1 - lda #230 - ldy 7 - sta (5),y -//SEG126 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpby1=_inc_zpby1 - inc 7 -//SEG127 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpby1_lt_coby1_then_la1 - lda 7 +//SEG125 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 ] -- zpby1=_inc_zpby1 + inc 5 +//SEG126 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 ] -- zpby1_lt_coby1_then_la1 + lda 5 cmp #40 bcc render__B2_from_B5 -//SEG128 render::@3 +//SEG127 render::@3 render__B3: -//SEG129 [60] (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 [ render::chrline#1 render::y#2 findcol::return#0 render::colline#2 ] -- zpptrby1=zpptrby1_plus_coby1 - lda 5 - clc - adc #40 - sta 5 - bcc !+ - inc 5+1 -!: -//SEG130 [61] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::chrline#1 render::y#2 findcol::return#0 ] -- zpptrby1=zpptrby1_plus_coby1 +//SEG128 [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 findcol::return#0 ] -- zpptrby1=zpptrby1_plus_coby1 lda 3 clc adc #40 @@ -8269,160 +8504,200 @@ render__B3: bcc !+ inc 3+1 !: -//SEG131 [62] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 render::chrline#1 findcol::return#0 ] -- zpby1=_inc_zpby1 +//SEG129 [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 findcol::return#0 ] -- zpby1=_inc_zpby1 inc 2 -//SEG132 [63] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 render::chrline#1 findcol::return#0 ] -- zpby1_lt_coby1_then_la1 +//SEG130 [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 findcol::return#0 ] -- zpby1_lt_coby1_then_la1 lda 2 cmp #25 bcc render__B1_from_B3 -//SEG133 render::@return +//SEG131 render::@return render__Breturn: -//SEG134 [64] return [ findcol::return#0 ] +//SEG132 [63] return [ findcol::return#0 ] rts -//SEG135 findcol +//SEG133 findcol findcol: -//SEG136 [65] phi from findcol to findcol::@1 +//SEG134 [64] phi from findcol to findcol::@1 findcol__B1_from_findcol: -//SEG137 [65] phi (byte) findcol::mincol#11 = (byte) 0 -- zpby1=coby1 +//SEG135 [64] phi (byte) findcol::mincol#11 = (byte) 0 -- zpby1=coby1 lda #0 - sta 10 -//SEG138 [65] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 - lda #255 sta 8 -//SEG139 [65] phi (byte) findcol::i#12 = (byte) 0 -- yby=coby1 +//SEG136 [64] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 + lda #255 + sta 6 +//SEG137 [64] phi (byte) findcol::i#12 = (byte) 0 -- yby=coby1 ldy #0 -//SEG140 [65] phi from findcol::@13 to findcol::@1 +//SEG138 [64] phi from findcol::@13 to findcol::@1 findcol__B1_from_B13: -//SEG141 [65] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy -//SEG142 [65] phi (byte) findcol::mindiff#10 = (byte) findcol::mindiff#11 -- register_copy -//SEG143 [65] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy -//SEG144 findcol::@1 +//SEG139 [64] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy +//SEG140 [64] phi (byte) findcol::mindiff#10 = (byte) findcol::mindiff#11 -- register_copy +//SEG141 [64] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy +//SEG142 findcol::@1 findcol__B1: -//SEG145 [66] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] -- aby=cowo1_staridx_yby - lda 4096,y -//SEG146 [67] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- xby=cowo1_staridx_yby - ldx 4352,y -//SEG147 [68] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_aby_then_la1 - cmp 11 +//SEG143 [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] -- xby=cowo1_staridx_yby + ldx 4096,y +//SEG144 [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_yby + lda 4352,y + sta 11 +//SEG145 [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_xby_then_la1 + cpx 9 beq findcol__B2 -//SEG148 findcol::@3 +//SEG146 findcol::@3 findcol__B3: -//SEG149 [69] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_aby_then_la1 - cmp 11 +//SEG147 [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_xby_then_la1 + cpx 9 bcs findcol__B6 -//SEG150 findcol::@7 +//SEG148 findcol::@7 findcol__B7: -//SEG151 [70] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_aby - eor #255 - sec - adc 11 - sta 9 -//SEG152 [71] phi from findcol::@7 to findcol::@8 -findcol__B8_from_B7: -//SEG153 [71] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy -//SEG154 findcol::@8 -findcol__B8: -//SEG155 [72] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_xby_then_la1 - cpx 12 - bcs findcol__B9 -//SEG156 findcol::@10 -findcol__B10: -//SEG157 [73] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_minus_xby +//SEG149 [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_xby stx 255 - lda 12 + lda 9 sec sbc 255 -//SEG158 [74] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] -- xby=zpby1_plus_aby - clc - adc 9 - tax -//SEG159 [75] phi from findcol::@10 to findcol::@11 -findcol__B11_from_B10: -//SEG160 [75] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy -//SEG161 findcol::@11 -findcol__B11: -//SEG162 [76] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] -- xby_lt_zpby1_then_la1 - cpx 8 - bcc findcol__B12 -//SEG163 [77] phi from findcol::@11 to findcol::@13 -findcol__B13_from_B11: -//SEG164 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::mindiff#10 -- register_copy -//SEG165 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#11 -- register_copy -//SEG166 findcol::@13 -findcol__B13: -//SEG167 [78] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- yby=_inc_yby - iny -//SEG168 [79] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- yby_lt_coby1_then_la1 - cpy #6 - bcc findcol__B1_from_B13 -//SEG169 [80] phi from findcol::@13 to findcol::@return -findcol__Breturn_from_B13: -//SEG170 [80] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy - jmp findcol__Breturn -//SEG171 [80] phi from findcol::@2 to findcol::@return -findcol__Breturn_from_B2: -//SEG172 [80] phi (byte) findcol::return#0 = (byte) 0 -- zpby1=coby1 - lda #0 - sta 10 -//SEG173 findcol::@return -findcol__Breturn: -//SEG174 [81] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] - rts -//SEG175 findcol::@12 -findcol__B12: -//SEG176 [82] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] -- zpby1=cowo1_staridx_yby - lda 4608,y - sta 10 -//SEG177 [83] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] -- zpby1=xby - stx 8 -//SEG178 [77] phi from findcol::@12 to findcol::@13 -findcol__B13_from_B12: -//SEG179 [77] phi (byte) findcol::mindiff#11 = (byte~) findcol::diff#13 -- register_copy -//SEG180 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy - jmp findcol__B13 -//SEG181 findcol::@9 -findcol__B9: -//SEG182 [84] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] -- aby=xby_minus_zpby1 - txa - sec - sbc 12 -//SEG183 [85] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] -- xby=zpby1_plus_aby - clc - adc 9 - tax -//SEG184 [75] phi from findcol::@9 to findcol::@11 -findcol__B11_from_B9: -//SEG185 [75] phi (byte) findcol::diff#6 = (byte) findcol::diff#2 -- register_copy - jmp findcol__B11 -//SEG186 findcol::@6 -findcol__B6: -//SEG187 [86] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=aby_minus_zpby2 + sta 7 +//SEG150 [70] phi from findcol::@7 to findcol::@8 +findcol__B8_from_B7: +//SEG151 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy +//SEG152 findcol::@8 +findcol__B8: +//SEG153 [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 + lda 10 + cmp 11 + bcc findcol__B9 +//SEG154 findcol::@10 +findcol__B10: +//SEG155 [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_minus_zpby2 + lda 10 sec sbc 11 - sta 9 -//SEG188 [71] phi from findcol::@6 to findcol::@8 +//SEG156 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] -- xby=zpby1_plus_aby + clc + adc 7 + tax +//SEG157 [74] phi from findcol::@10 to findcol::@11 +findcol__B11_from_B10: +//SEG158 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy +//SEG159 findcol::@11 +findcol__B11: +//SEG160 [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] -- xby_lt_zpby1_then_la1 + cpx 6 + bcc findcol__B12 +//SEG161 [76] phi from findcol::@11 to findcol::@13 +findcol__B13_from_B11: +//SEG162 [76] phi (byte) findcol::mindiff#11 = (byte) findcol::mindiff#10 -- register_copy +//SEG163 [76] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#11 -- register_copy +//SEG164 findcol::@13 +findcol__B13: +//SEG165 [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- yby=_inc_yby + iny +//SEG166 [78] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- yby_lt_coby1_then_la1 + cpy #6 + bcc findcol__B1_from_B13 +//SEG167 [79] phi from findcol::@13 to findcol::@return +findcol__Breturn_from_B13: +//SEG168 [79] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy + jmp findcol__Breturn +//SEG169 [79] phi from findcol::@2 to findcol::@return +findcol__Breturn_from_B2: +//SEG170 [79] phi (byte) findcol::return#0 = (byte) 0 -- zpby1=coby1 + lda #0 + sta 8 +//SEG171 findcol::@return +findcol__Breturn: +//SEG172 [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] + rts +//SEG173 findcol::@12 +findcol__B12: +//SEG174 [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] -- zpby1=cowo1_staridx_yby + lda 4608,y + sta 8 +//SEG175 [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] -- zpby1=xby + stx 6 +//SEG176 [76] phi from findcol::@12 to findcol::@13 +findcol__B13_from_B12: +//SEG177 [76] phi (byte) findcol::mindiff#11 = (byte~) findcol::diff#13 -- register_copy +//SEG178 [76] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy + jmp findcol__B13 +//SEG179 findcol::@9 +findcol__B9: +//SEG180 [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] -- aby=zpby1_minus_zpby2 + lda 11 + sec + sbc 10 +//SEG181 [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] -- xby=zpby1_plus_aby + clc + adc 7 + tax +//SEG182 [74] phi from findcol::@9 to findcol::@11 +findcol__B11_from_B9: +//SEG183 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#2 -- register_copy + jmp findcol__B11 +//SEG184 findcol::@6 +findcol__B6: +//SEG185 [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=xby_minus_zpby2 + txa + sec + sbc 9 + sta 7 +//SEG186 [70] phi from findcol::@6 to findcol::@8 findcol__B8_from_B6: -//SEG189 [71] phi (byte) findcol::diff#4 = (byte) findcol::diff#0 -- register_copy +//SEG187 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#0 -- register_copy jmp findcol__B8 -//SEG190 findcol::@2 +//SEG188 findcol::@2 findcol__B2: -//SEG191 [87] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_xby_then_la1 - cpx 12 +//SEG189 [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 + lda 10 + cmp 11 beq findcol__Breturn_from_B2 jmp findcol__B3 -//SEG192 addpoint +//SEG190 initscreen +initscreen: +//SEG191 [87] phi from initscreen to initscreen::@1 +initscreen__B1_from_initscreen: +//SEG192 [87] phi (byte*) initscreen::screen#2 = (word) 1024 -- zpptrby1=cowo1 + lda #<1024 + sta 3 + lda #>1024 + sta 3+1 +//SEG193 [87] phi from initscreen::@1 to initscreen::@1 +initscreen__B1_from_B1: +//SEG194 [87] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 -- register_copy +//SEG195 initscreen::@1 +initscreen__B1: +//SEG196 [88] *((byte*) initscreen::screen#2) ← (byte) 230 [ findcol::return#0 initscreen::screen#2 ] -- _star_zpptrby1=coby1 + ldy #0 + lda #230 + sta (3),y +//SEG197 [89] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ findcol::return#0 initscreen::screen#1 ] -- zpptrby1=_inc_zpptrby1 + inc 3 + bne !+ + inc 3+1 +!: +//SEG198 [90] if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 [ findcol::return#0 initscreen::screen#1 ] -- zpptrby1_lt_cowo1_then_la1 + lda 3+1 + cmp #>2048 + bcc initscreen__B1_from_B1 + bne !+ + lda 3 + cmp #<2048 + bcc initscreen__B1_from_B1 +!: +//SEG199 initscreen::@return +initscreen__Breturn: +//SEG200 [91] return [ findcol::return#0 ] + rts +//SEG201 addpoint addpoint: -//SEG193 [89] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_yby=aby +//SEG202 [93] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_yby=aby sta 4096,y -//SEG194 [90] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] -- cowo1_staridx_yby=xby +//SEG203 [94] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] -- cowo1_staridx_yby=xby txa sta 4352,y -//SEG195 [91] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] -- cowo1_staridx_yby=zpby1 +//SEG204 [95] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] -- cowo1_staridx_yby=zpby1 lda 2 sta 4608,y -//SEG196 addpoint::@return +//SEG205 addpoint::@return addpoint__Breturn: -//SEG197 [92] return [ findcol::return#0 ] +//SEG206 [96] return [ findcol::return#0 ] rts FINAL SYMBOL TABLE @@ -8492,42 +8767,49 @@ FINAL SYMBOL TABLE (label) findcol::@9 (label) findcol::@return (byte) findcol::diff -(byte) findcol::diff#0 zp byte:9 20002.0 -(byte) findcol::diff#1 zp byte:9 20002.0 -(byte~) findcol::diff#13 zp byte:8 20002.0 +(byte) findcol::diff#0 zp byte:7 20002.0 +(byte) findcol::diff#1 zp byte:7 20002.0 +(byte~) findcol::diff#13 zp byte:6 20002.0 (byte) findcol::diff#2 reg byte x 20002.0 (byte) findcol::diff#3 reg byte x 20002.0 -(byte) findcol::diff#4 zp byte:9 10001.0 +(byte) findcol::diff#4 zp byte:7 10001.0 (byte) findcol::diff#6 reg byte x 13334.666666666666 (byte) findcol::i (byte) findcol::i#1 reg byte y 15001.5 (byte) findcol::i#12 reg byte y 2631.842105263158 (byte) findcol::mincol -(byte) findcol::mincol#1 zp byte:10 10001.0 -(byte) findcol::mincol#11 zp byte:10 1250.125 -(byte) findcol::mincol#2 zp byte:10 13334.666666666666 +(byte) findcol::mincol#1 zp byte:8 10001.0 +(byte) findcol::mincol#11 zp byte:8 1250.125 +(byte) findcol::mincol#2 zp byte:8 13334.666666666666 (byte) findcol::mindiff -(byte) findcol::mindiff#10 zp byte:8 1875.1875 -(byte) findcol::mindiff#11 zp byte:8 10001.0 +(byte) findcol::mindiff#10 zp byte:6 1875.1875 +(byte) findcol::mindiff#11 zp byte:6 10001.0 (byte) findcol::return -(byte) findcol::return#0 zp byte:10 152.80555555555554 +(byte) findcol::return#0 zp byte:8 144.76315789473685 (byte) findcol::x -(byte) findcol::x#0 zp byte:11 1577.1153846153845 +(byte) findcol::x#0 zp byte:9 1577.1153846153845 (byte) findcol::xp -(byte) findcol::xp#0 reg byte a 10001.0 +(byte) findcol::xp#0 reg byte x 10001.0 (byte) findcol::y -(byte) findcol::y#0 zp byte:12 1640.2 +(byte) findcol::y#0 zp byte:10 1640.2 (byte) findcol::yp -(byte) findcol::yp#0 reg byte x 6250.625 +(byte) findcol::yp#0 zp byte:11 6250.625 +(void()) initscreen() +(label) initscreen::@1 +(label) initscreen::@return +(byte*) initscreen::screen +(byte*) initscreen::screen#1 zp ptr byte:3 16.5 +(byte*) initscreen::screen#2 zp ptr byte:3 16.5 (void()) main() (label) main::@1 (label) main::@10 +(label) main::@11 (label) main::@3 (label) main::@4 (label) main::@5 (label) main::@6 (label) main::@7 -(label) main::@9 +(label) main::@8 (label) main::@return (byte) numpoints (void()) render() @@ -8536,30 +8818,26 @@ FINAL SYMBOL TABLE (label) render::@3 (label) render::@5 (label) render::@return -(byte*) render::chrline -(byte*) render::chrline#1 zp ptr byte:5 50.5 -(byte*) render::chrline#2 zp ptr byte:5 36.45454545454545 (byte) render::col (byte) render::col#0 reg byte a 2002.0 (byte*) render::colline (byte*) render::colline#1 zp ptr byte:3 67.33333333333333 -(byte*) render::colline#2 zp ptr byte:3 35.38235294117647 +(byte*) render::colline#2 zp ptr byte:3 37.59375 (byte) render::x -(byte) render::x#1 zp byte:7 1501.5 -(byte) render::x#2 zp byte:7 166.83333333333334 +(byte) render::x#1 zp byte:5 1501.5 +(byte) render::x#2 zp byte:5 138.06896551724137 (byte) render::y (byte) render::y#1 zp byte:2 151.5 -(byte) render::y#2 zp byte:2 34.371428571428574 +(byte) render::y#2 zp byte:2 36.45454545454545 zp byte:2 [ render::y#2 render::y#1 addpoint::c#6 ] -zp ptr byte:3 [ render::colline#2 render::colline#1 ] -zp ptr byte:5 [ render::chrline#2 render::chrline#1 ] -zp byte:7 [ render::x#2 render::x#1 ] +zp ptr byte:3 [ render::colline#2 render::colline#1 initscreen::screen#2 initscreen::screen#1 ] +zp byte:5 [ render::x#2 render::x#1 ] reg byte y [ findcol::i#12 findcol::i#1 ] -zp byte:8 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] -zp byte:9 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] +zp byte:6 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] +zp byte:7 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] reg byte x [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] -zp byte:10 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] +zp byte:8 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] reg byte a [ addpoint::x#6 ] reg byte y [ addpoint::idx#6 ] reg byte x [ addpoint::y#6 ] @@ -8583,11 +8861,11 @@ reg byte a [ animate::$21 ] reg byte a [ animate::$22 ] reg byte a [ animate::$24 ] reg byte a [ animate::$25 ] -zp byte:11 [ findcol::x#0 ] -zp byte:12 [ findcol::y#0 ] +zp byte:9 [ findcol::x#0 ] +zp byte:10 [ findcol::y#0 ] reg byte a [ render::col#0 ] -reg byte a [ findcol::xp#0 ] -reg byte x [ findcol::yp#0 ] +reg byte x [ findcol::xp#0 ] +zp byte:11 [ findcol::yp#0 ] reg byte a [ findcol::$10 ] reg byte a [ findcol::$8 ] @@ -8601,303 +8879,289 @@ BEND: //SEG3 main main: //SEG4 [1] call addpoint param-assignment [ findcol::return#0 ] -//SEG5 [88] phi from main to addpoint +//SEG5 [92] phi from main to addpoint addpoint_from_main: -//SEG6 [88] phi (byte) addpoint::c#6 = (byte) 1 -- zpby1=coby1 +//SEG6 [92] phi (byte) addpoint::c#6 = (byte) 1 -- zpby1=coby1 lda #1 sta 2 -//SEG7 [88] phi (byte) addpoint::y#6 = (byte) 5 -- xby=coby1 +//SEG7 [92] phi (byte) addpoint::y#6 = (byte) 5 -- xby=coby1 ldx #5 -//SEG8 [88] phi (byte) addpoint::idx#6 = (byte) 0 -- yby=coby1 +//SEG8 [92] phi (byte) addpoint::idx#6 = (byte) 0 -- yby=coby1 ldy #0 -//SEG9 [88] phi (byte) addpoint::x#6 = (byte) 5 -- aby=coby1 +//SEG9 [92] phi (byte) addpoint::x#6 = (byte) 5 -- aby=coby1 lda #5 jsr addpoint //SEG10 main::@3 main__B3: //SEG11 [2] call addpoint param-assignment [ findcol::return#0 ] -//SEG12 [88] phi from main::@3 to addpoint +//SEG12 [92] phi from main::@3 to addpoint addpoint_from_B3: -//SEG13 [88] phi (byte) addpoint::c#6 = (byte) 2 -- zpby1=coby1 +//SEG13 [92] phi (byte) addpoint::c#6 = (byte) 2 -- zpby1=coby1 lda #2 sta 2 -//SEG14 [88] phi (byte) addpoint::y#6 = (byte) 8 -- xby=coby1 +//SEG14 [92] phi (byte) addpoint::y#6 = (byte) 8 -- xby=coby1 ldx #8 -//SEG15 [88] phi (byte) addpoint::idx#6 = (byte) 1 -- yby=coby1 +//SEG15 [92] phi (byte) addpoint::idx#6 = (byte) 1 -- yby=coby1 ldy #1 -//SEG16 [88] phi (byte) addpoint::x#6 = (byte) 15 -- aby=coby1 +//SEG16 [92] phi (byte) addpoint::x#6 = (byte) 15 -- aby=coby1 lda #15 jsr addpoint //SEG17 main::@4 main__B4: //SEG18 [3] call addpoint param-assignment [ findcol::return#0 ] -//SEG19 [88] phi from main::@4 to addpoint +//SEG19 [92] phi from main::@4 to addpoint addpoint_from_B4: -//SEG20 [88] phi (byte) addpoint::c#6 = (byte) 3 -- zpby1=coby1 +//SEG20 [92] phi (byte) addpoint::c#6 = (byte) 3 -- zpby1=coby1 lda #3 sta 2 -//SEG21 [88] phi (byte) addpoint::y#6 = (byte) 14 -- xby=coby1 +//SEG21 [92] phi (byte) addpoint::y#6 = (byte) 14 -- xby=coby1 ldx #14 -//SEG22 [88] phi (byte) addpoint::idx#6 = (byte) 2 -- yby=coby1 +//SEG22 [92] phi (byte) addpoint::idx#6 = (byte) 2 -- yby=coby1 ldy #2 -//SEG23 [88] phi (byte) addpoint::x#6 = (byte) 6 -- aby=coby1 +//SEG23 [92] phi (byte) addpoint::x#6 = (byte) 6 -- aby=coby1 lda #6 jsr addpoint //SEG24 main::@5 main__B5: //SEG25 [4] call addpoint param-assignment [ findcol::return#0 ] -//SEG26 [88] phi from main::@5 to addpoint +//SEG26 [92] phi from main::@5 to addpoint addpoint_from_B5: -//SEG27 [88] phi (byte) addpoint::c#6 = (byte) 4 -- zpby1=coby1 +//SEG27 [92] phi (byte) addpoint::c#6 = (byte) 4 -- zpby1=coby1 lda #4 sta 2 -//SEG28 [88] phi (byte) addpoint::y#6 = (byte) 2 -- xby=coby1 +//SEG28 [92] phi (byte) addpoint::y#6 = (byte) 2 -- xby=coby1 ldx #2 -//SEG29 [88] phi (byte) addpoint::idx#6 = (byte) 3 -- yby=coby1 +//SEG29 [92] phi (byte) addpoint::idx#6 = (byte) 3 -- yby=coby1 ldy #3 -//SEG30 [88] phi (byte) addpoint::x#6 = (byte) 34 -- aby=coby1 +//SEG30 [92] phi (byte) addpoint::x#6 = (byte) 34 -- aby=coby1 lda #34 jsr addpoint //SEG31 main::@6 main__B6: //SEG32 [5] call addpoint param-assignment [ findcol::return#0 ] -//SEG33 [88] phi from main::@6 to addpoint +//SEG33 [92] phi from main::@6 to addpoint addpoint_from_B6: -//SEG34 [88] phi (byte) addpoint::c#6 = (byte) 5 -- zpby1=coby1 +//SEG34 [92] phi (byte) addpoint::c#6 = (byte) 5 -- zpby1=coby1 lda #5 sta 2 -//SEG35 [88] phi (byte) addpoint::y#6 = (byte) 17 -- xby=coby1 +//SEG35 [92] phi (byte) addpoint::y#6 = (byte) 17 -- xby=coby1 ldx #17 -//SEG36 [88] phi (byte) addpoint::idx#6 = (byte) 4 -- yby=coby1 +//SEG36 [92] phi (byte) addpoint::idx#6 = (byte) 4 -- yby=coby1 ldy #4 -//SEG37 [88] phi (byte) addpoint::x#6 = (byte) 21 -- aby=coby1 +//SEG37 [92] phi (byte) addpoint::x#6 = (byte) 21 -- aby=coby1 lda #21 jsr addpoint //SEG38 main::@7 main__B7: //SEG39 [6] call addpoint param-assignment [ findcol::return#0 ] -//SEG40 [88] phi from main::@7 to addpoint +//SEG40 [92] phi from main::@7 to addpoint addpoint_from_B7: -//SEG41 [88] phi (byte) addpoint::c#6 = (byte) 7 -- zpby1=coby1 +//SEG41 [92] phi (byte) addpoint::c#6 = (byte) 7 -- zpby1=coby1 lda #7 sta 2 -//SEG42 [88] phi (byte) addpoint::y#6 = (byte) 22 -- xby=coby1 +//SEG42 [92] phi (byte) addpoint::y#6 = (byte) 22 -- xby=coby1 ldx #22 -//SEG43 [88] phi (byte) addpoint::idx#6 = (byte) 5 -- yby=coby1 +//SEG43 [92] phi (byte) addpoint::idx#6 = (byte) 5 -- yby=coby1 ldy #5 -//SEG44 [88] phi (byte) addpoint::x#6 = (byte) 31 -- aby=coby1 +//SEG44 [92] phi (byte) addpoint::x#6 = (byte) 31 -- aby=coby1 lda #31 jsr addpoint -//SEG45 main::@1 +//SEG45 main::@8 +main__B8: +//SEG46 [7] call initscreen param-assignment [ findcol::return#0 ] + jsr initscreen +//SEG47 main::@1 main__B1: -//SEG46 [7] call render param-assignment [ findcol::return#0 ] +//SEG48 [8] call render param-assignment [ findcol::return#0 ] jsr render -//SEG47 main::@9 -main__B9: -//SEG48 [8] call animate param-assignment [ findcol::return#0 ] - jsr animate //SEG49 main::@10 main__B10: -//SEG50 [9] if(true) goto main::@1 [ findcol::return#0 ] -- true_then_la1 +//SEG50 [9] call animate param-assignment [ findcol::return#0 ] + jsr animate +//SEG51 main::@11 +main__B11: +//SEG52 [10] if(true) goto main::@1 [ findcol::return#0 ] -- true_then_la1 jmp main__B1 -//SEG51 main::@return +//SEG53 main::@return main__Breturn: -//SEG52 [10] return [ findcol::return#0 ] +//SEG54 [11] return [ findcol::return#0 ] rts -//SEG53 animate +//SEG55 animate animate: -//SEG54 [11] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] -- aby=_star_cowo1 +//SEG56 [12] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 findcol::return#0 ] -- aby=_star_cowo1 lda 4096 -//SEG55 [12] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] -- aby=aby_plus_1 +//SEG57 [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 findcol::return#0 ] -- aby=aby_plus_1 clc adc #1 -//SEG56 [13] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG58 [14] *((word) 4096) ← (byte~) animate::$1 [ findcol::return#0 ] -- _star_cowo1=aby sta 4096 -//SEG57 [14] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] -- aby=_star_cowo1 +//SEG59 [15] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 findcol::return#0 ] -- aby=_star_cowo1 lda 4096 -//SEG58 [15] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG60 [16] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #40 beq animate__B1 -//SEG59 animate::@2 +//SEG61 animate::@2 animate__B2: -//SEG60 [16] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] -- aby=_star_cowo1 +//SEG62 [17] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 findcol::return#0 ] -- aby=_star_cowo1 lda 4352 -//SEG61 [17] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] -- aby=aby_plus_1 +//SEG63 [18] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 findcol::return#0 ] -- aby=aby_plus_1 clc adc #1 -//SEG62 [18] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG64 [19] *((word) 4352) ← (byte~) animate::$5 [ findcol::return#0 ] -- _star_cowo1=aby sta 4352 -//SEG63 [19] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] -- aby=_star_cowo1 +//SEG65 [20] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 findcol::return#0 ] -- aby=_star_cowo1 lda 4352 -//SEG64 [20] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG66 [21] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #25 beq animate__B3 -//SEG65 animate::@4 +//SEG67 animate::@4 animate__B4: -//SEG66 [21] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] -- xby=_star_cowo1 +//SEG68 [22] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 findcol::return#0 ] -- xby=_star_cowo1 ldx 4097 -//SEG67 [22] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] -- xby=xby_minus_1 +//SEG69 [23] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 findcol::return#0 ] -- xby=xby_minus_1 dex -//SEG68 [23] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] -- _star_cowo1=xby +//SEG70 [24] *((word) 4097) ← (byte~) animate::$9 [ findcol::return#0 ] -- _star_cowo1=xby stx 4097 -//SEG69 [24] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] -- aby=_star_cowo1 +//SEG71 [25] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 findcol::return#0 ] -- aby=_star_cowo1 lda 4097 -//SEG70 [25] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG72 [26] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #255 beq animate__B5 -//SEG71 animate::@6 +//SEG73 animate::@6 animate__B6: -//SEG72 [26] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] -- aby=_star_cowo1 +//SEG74 [27] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 findcol::return#0 ] -- aby=_star_cowo1 lda 4354 -//SEG73 [27] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] -- aby=aby_plus_1 +//SEG75 [28] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 findcol::return#0 ] -- aby=aby_plus_1 clc adc #1 -//SEG74 [28] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG76 [29] *((word) 4354) ← (byte~) animate::$13 [ findcol::return#0 ] -- _star_cowo1=aby sta 4354 -//SEG75 [29] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] -- aby=_star_cowo1 +//SEG77 [30] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 findcol::return#0 ] -- aby=_star_cowo1 lda 4354 -//SEG76 [30] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG78 [31] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #25 beq animate__B7 -//SEG77 animate::@8 +//SEG79 animate::@8 animate__B8: -//SEG78 [31] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] -- xby=_star_cowo1 +//SEG80 [32] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 findcol::return#0 ] -- xby=_star_cowo1 ldx 4355 -//SEG79 [32] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] -- xby=xby_minus_1 +//SEG81 [33] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 findcol::return#0 ] -- xby=xby_minus_1 dex -//SEG80 [33] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] -- _star_cowo1=xby +//SEG82 [34] *((word) 4355) ← (byte~) animate::$17 [ findcol::return#0 ] -- _star_cowo1=xby stx 4355 -//SEG81 [34] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] -- aby=_star_cowo1 +//SEG83 [35] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 findcol::return#0 ] -- aby=_star_cowo1 lda 4355 -//SEG82 [35] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 +//SEG84 [36] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ findcol::return#0 ] -- aby_eq_coby1_then_la1 cmp #255 beq animate__B9 -//SEG83 animate::@return +//SEG85 animate::@return animate__Breturn: -//SEG84 [36] return [ findcol::return#0 ] +//SEG86 [37] return [ findcol::return#0 ] rts -//SEG85 animate::@9 +//SEG87 animate::@9 animate__B9: -//SEG86 [37] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG88 [38] *((word) 4355) ← (byte) 25 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #25 sta 4355 -//SEG87 [38] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] -- aby=_star_cowo1 +//SEG89 [39] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 findcol::return#0 ] -- aby=_star_cowo1 lda 4099 -//SEG88 [39] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] -- aby=aby_plus_coby1 +//SEG90 [40] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 findcol::return#0 ] -- aby=aby_plus_coby1 clc adc #7 -//SEG89 [40] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG91 [41] *((word) 4099) ← (byte~) animate::$21 [ findcol::return#0 ] -- _star_cowo1=aby sta 4099 -//SEG90 [41] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] -- aby=_star_cowo1 +//SEG92 [42] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 findcol::return#0 ] -- aby=_star_cowo1 lda 4099 -//SEG91 [42] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] -- aby_ge_coby1_then_la1 +//SEG93 [43] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ findcol::return#0 ] -- aby_ge_coby1_then_la1 cmp #40 bcs animate__B11 jmp animate__Breturn -//SEG92 animate::@11 +//SEG94 animate::@11 animate__B11: -//SEG93 [43] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] -- aby=_star_cowo1 +//SEG95 [44] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 findcol::return#0 ] -- aby=_star_cowo1 lda 4099 -//SEG94 [44] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] -- aby=aby_minus_coby1 +//SEG96 [45] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 findcol::return#0 ] -- aby=aby_minus_coby1 sec sbc #40 -//SEG95 [45] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] -- _star_cowo1=aby +//SEG97 [46] *((word) 4099) ← (byte~) animate::$25 [ findcol::return#0 ] -- _star_cowo1=aby sta 4099 jmp animate__Breturn -//SEG96 animate::@7 +//SEG98 animate::@7 animate__B7: -//SEG97 [46] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG99 [47] *((word) 4354) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #0 sta 4354 jmp animate__B8 -//SEG98 animate::@5 +//SEG100 animate::@5 animate__B5: -//SEG99 [47] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG101 [48] *((word) 4097) ← (byte) 40 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #40 sta 4097 jmp animate__B6 -//SEG100 animate::@3 +//SEG102 animate::@3 animate__B3: -//SEG101 [48] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG103 [49] *((word) 4352) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #0 sta 4352 jmp animate__B4 -//SEG102 animate::@1 +//SEG104 animate::@1 animate__B1: -//SEG103 [49] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 +//SEG105 [50] *((word) 4096) ← (byte) 0 [ findcol::return#0 ] -- _star_cowo1=coby2 lda #0 sta 4096 jmp animate__B2 -//SEG104 render +//SEG106 render render: -//SEG105 [50] phi from render to render::@1 +//SEG107 [51] phi from render to render::@1 render__B1_from_render: -//SEG106 [50] phi (byte*) render::chrline#2 = (word) 1024 -- zpptrby1=cowo1 - lda #<1024 - sta 5 - lda #>1024 - sta 5+1 -//SEG107 [50] phi (byte*) render::colline#2 = (word) 55296 -- zpptrby1=cowo1 +//SEG108 [51] phi (byte*) render::colline#2 = (word) 55296 -- zpptrby1=cowo1 lda #<55296 sta 3 lda #>55296 sta 3+1 -//SEG108 [50] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 +//SEG109 [51] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 lda #0 sta 2 -//SEG109 [50] phi from render::@3 to render::@1 +//SEG110 [51] phi from render::@3 to render::@1 render__B1_from_B3: -//SEG110 [50] phi (byte*) render::chrline#2 = (byte*) render::chrline#1 -- register_copy -//SEG111 [50] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy -//SEG112 [50] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy +//SEG111 [51] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy +//SEG112 [51] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy //SEG113 render::@1 render__B1: -//SEG114 [51] phi from render::@1 to render::@2 +//SEG114 [52] phi from render::@1 to render::@2 render__B2_from_B1: -//SEG115 [51] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 +//SEG115 [52] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 lda #0 - sta 7 -//SEG116 [51] phi from render::@5 to render::@2 + sta 5 +//SEG116 [52] phi from render::@5 to render::@2 render__B2_from_B5: -//SEG117 [51] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy +//SEG117 [52] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy //SEG118 render::@2 render__B2: -//SEG119 [52] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 ] -- zpby1=zpby2 - lda 7 - sta 11 -//SEG120 [53] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] -- zpby1=zpby2 +//SEG119 [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 ] -- zpby1=zpby2 + lda 5 + sta 9 +//SEG120 [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] -- zpby1=zpby2 lda 2 - sta 12 -//SEG121 [54] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] + sta 10 +//SEG121 [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] jsr findcol //SEG122 render::@5 render__B5: -//SEG123 [55] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 render::chrline#2 ] -- aby=zpby1 - lda 10 -//SEG124 [56] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpptrby1_staridx_zpby1=aby - ldy 7 +//SEG123 [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::col#0 ] -- aby=zpby1 + lda 8 +//SEG124 [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] -- zpptrby1_staridx_zpby1=aby + ldy 5 sta (3),y -//SEG125 [57] *((byte*) render::chrline#2 + (byte) render::x#2) ← (byte) 230 [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpptrby1_staridx_zpby1=coby1 - lda #230 - ldy 7 - sta (5),y -//SEG126 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpby1=_inc_zpby1 - inc 7 -//SEG127 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 ] -- zpby1_lt_coby1_then_la1 - lda 7 +//SEG125 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 ] -- zpby1=_inc_zpby1 + inc 5 +//SEG126 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 findcol::return#0 render::colline#2 ] -- zpby1_lt_coby1_then_la1 + lda 5 cmp #40 bcc render__B2_from_B5 -//SEG128 render::@3 +//SEG127 render::@3 render__B3: -//SEG129 [60] (byte*) render::chrline#1 ← (byte*) render::chrline#2 + (byte) 40 [ render::chrline#1 render::y#2 findcol::return#0 render::colline#2 ] -- zpptrby1=zpptrby1_plus_coby1 - lda 5 - clc - adc #40 - sta 5 - bcc !+ - inc 5+1 -!: -//SEG130 [61] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::chrline#1 render::y#2 findcol::return#0 ] -- zpptrby1=zpptrby1_plus_coby1 +//SEG128 [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 findcol::return#0 ] -- zpptrby1=zpptrby1_plus_coby1 lda 3 clc adc #40 @@ -8905,159 +9169,199 @@ render__B3: bcc !+ inc 3+1 !: -//SEG131 [62] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 render::chrline#1 findcol::return#0 ] -- zpby1=_inc_zpby1 +//SEG129 [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 findcol::return#0 ] -- zpby1=_inc_zpby1 inc 2 -//SEG132 [63] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 render::chrline#1 findcol::return#0 ] -- zpby1_lt_coby1_then_la1 +//SEG130 [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 findcol::return#0 ] -- zpby1_lt_coby1_then_la1 lda 2 cmp #25 bcc render__B1_from_B3 -//SEG133 render::@return +//SEG131 render::@return render__Breturn: -//SEG134 [64] return [ findcol::return#0 ] +//SEG132 [63] return [ findcol::return#0 ] rts -//SEG135 findcol +//SEG133 findcol findcol: -//SEG136 [65] phi from findcol to findcol::@1 +//SEG134 [64] phi from findcol to findcol::@1 findcol__B1_from_findcol: -//SEG137 [65] phi (byte) findcol::mincol#11 = (byte) 0 -- zpby1=coby1 +//SEG135 [64] phi (byte) findcol::mincol#11 = (byte) 0 -- zpby1=coby1 lda #0 - sta 10 -//SEG138 [65] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 - lda #255 sta 8 -//SEG139 [65] phi (byte) findcol::i#12 = (byte) 0 -- yby=coby1 +//SEG136 [64] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 + lda #255 + sta 6 +//SEG137 [64] phi (byte) findcol::i#12 = (byte) 0 -- yby=coby1 ldy #0 -//SEG140 [65] phi from findcol::@13 to findcol::@1 +//SEG138 [64] phi from findcol::@13 to findcol::@1 findcol__B1_from_B13: -//SEG141 [65] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy -//SEG142 [65] phi (byte) findcol::mindiff#10 = (byte) findcol::mindiff#11 -- register_copy -//SEG143 [65] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy -//SEG144 findcol::@1 +//SEG139 [64] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy +//SEG140 [64] phi (byte) findcol::mindiff#10 = (byte) findcol::mindiff#11 -- register_copy +//SEG141 [64] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy +//SEG142 findcol::@1 findcol__B1: -//SEG145 [66] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] -- aby=cowo1_staridx_yby - lda 4096,y -//SEG146 [67] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- xby=cowo1_staridx_yby - ldx 4352,y -//SEG147 [68] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_aby_then_la1 - cmp 11 +//SEG143 [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] -- xby=cowo1_staridx_yby + ldx 4096,y +//SEG144 [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_yby + lda 4352,y + sta 11 +//SEG145 [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_xby_then_la1 + cpx 9 beq findcol__B2 -//SEG148 findcol::@3 +//SEG146 findcol::@3 findcol__B3: -//SEG149 [69] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_aby_then_la1 - cmp 11 +//SEG147 [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_xby_then_la1 + cpx 9 bcs findcol__B6 -//SEG150 findcol::@7 +//SEG148 findcol::@7 findcol__B7: -//SEG151 [70] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_aby - eor #255 - sec - adc 11 - sta 9 -//SEG152 [71] phi from findcol::@7 to findcol::@8 -findcol__B8_from_B7: -//SEG153 [71] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy -//SEG154 findcol::@8 -findcol__B8: -//SEG155 [72] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_xby_then_la1 - cpx 12 - bcs findcol__B9 -//SEG156 findcol::@10 -findcol__B10: -//SEG157 [73] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_minus_xby +//SEG149 [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_xby stx 255 - lda 12 + lda 9 sec sbc 255 -//SEG158 [74] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] -- xby=zpby1_plus_aby - clc - adc 9 - tax -//SEG159 [75] phi from findcol::@10 to findcol::@11 -findcol__B11_from_B10: -//SEG160 [75] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy -//SEG161 findcol::@11 -findcol__B11: -//SEG162 [76] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] -- xby_lt_zpby1_then_la1 - cpx 8 - bcc findcol__B12 -//SEG163 [77] phi from findcol::@11 to findcol::@13 -findcol__B13_from_B11: -//SEG164 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::mindiff#10 -- register_copy -//SEG165 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#11 -- register_copy -//SEG166 findcol::@13 -findcol__B13: -//SEG167 [78] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- yby=_inc_yby - iny -//SEG168 [79] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- yby_lt_coby1_then_la1 - cpy #6 - bcc findcol__B1_from_B13 -//SEG169 [80] phi from findcol::@13 to findcol::@return -findcol__Breturn_from_B13: -//SEG170 [80] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy - jmp findcol__Breturn -//SEG171 [80] phi from findcol::@2 to findcol::@return -findcol__Breturn_from_B2: -//SEG172 [80] phi (byte) findcol::return#0 = (byte) 0 -- zpby1=coby1 - lda #0 - sta 10 -//SEG173 findcol::@return -findcol__Breturn: -//SEG174 [81] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 render::chrline#2 findcol::x#0 findcol::y#0 ] - rts -//SEG175 findcol::@12 -findcol__B12: -//SEG176 [82] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] -- zpby1=cowo1_staridx_yby - lda 4608,y - sta 10 -//SEG177 [83] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] -- zpby1=xby - stx 8 -//SEG178 [77] phi from findcol::@12 to findcol::@13 -findcol__B13_from_B12: -//SEG179 [77] phi (byte) findcol::mindiff#11 = (byte~) findcol::diff#13 -- register_copy -//SEG180 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy - jmp findcol__B13 -//SEG181 findcol::@9 -findcol__B9: -//SEG182 [84] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] -- aby=xby_minus_zpby1 - txa - sec - sbc 12 -//SEG183 [85] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] -- xby=zpby1_plus_aby - clc - adc 9 - tax -//SEG184 [75] phi from findcol::@9 to findcol::@11 -findcol__B11_from_B9: -//SEG185 [75] phi (byte) findcol::diff#6 = (byte) findcol::diff#2 -- register_copy - jmp findcol__B11 -//SEG186 findcol::@6 -findcol__B6: -//SEG187 [86] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=aby_minus_zpby2 + sta 7 +//SEG150 [70] phi from findcol::@7 to findcol::@8 +findcol__B8_from_B7: +//SEG151 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy +//SEG152 findcol::@8 +findcol__B8: +//SEG153 [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 + lda 10 + cmp 11 + bcc findcol__B9 +//SEG154 findcol::@10 +findcol__B10: +//SEG155 [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_minus_zpby2 + lda 10 sec sbc 11 - sta 9 -//SEG188 [71] phi from findcol::@6 to findcol::@8 +//SEG156 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] -- xby=zpby1_plus_aby + clc + adc 7 + tax +//SEG157 [74] phi from findcol::@10 to findcol::@11 +findcol__B11_from_B10: +//SEG158 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy +//SEG159 findcol::@11 +findcol__B11: +//SEG160 [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] -- xby_lt_zpby1_then_la1 + cpx 6 + bcc findcol__B12 +//SEG161 [76] phi from findcol::@11 to findcol::@13 +findcol__B13_from_B11: +//SEG162 [76] phi (byte) findcol::mindiff#11 = (byte) findcol::mindiff#10 -- register_copy +//SEG163 [76] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#11 -- register_copy +//SEG164 findcol::@13 +findcol__B13: +//SEG165 [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- yby=_inc_yby + iny +//SEG166 [78] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- yby_lt_coby1_then_la1 + cpy #6 + bcc findcol__B1_from_B13 +//SEG167 [79] phi from findcol::@13 to findcol::@return +findcol__Breturn_from_B13: +//SEG168 [79] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy + jmp findcol__Breturn +//SEG169 [79] phi from findcol::@2 to findcol::@return +findcol__Breturn_from_B2: +//SEG170 [79] phi (byte) findcol::return#0 = (byte) 0 -- zpby1=coby1 + lda #0 + sta 8 +//SEG171 findcol::@return +findcol__Breturn: +//SEG172 [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 findcol::x#0 findcol::y#0 ] + rts +//SEG173 findcol::@12 +findcol__B12: +//SEG174 [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] -- zpby1=cowo1_staridx_yby + lda 4608,y + sta 8 +//SEG175 [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] -- zpby1=xby + stx 6 +//SEG176 [76] phi from findcol::@12 to findcol::@13 +findcol__B13_from_B12: +//SEG177 [76] phi (byte) findcol::mindiff#11 = (byte~) findcol::diff#13 -- register_copy +//SEG178 [76] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy + jmp findcol__B13 +//SEG179 findcol::@9 +findcol__B9: +//SEG180 [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] -- aby=zpby1_minus_zpby2 + lda 11 + sec + sbc 10 +//SEG181 [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] -- xby=zpby1_plus_aby + clc + adc 7 + tax +//SEG182 [74] phi from findcol::@9 to findcol::@11 +findcol__B11_from_B9: +//SEG183 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#2 -- register_copy + jmp findcol__B11 +//SEG184 findcol::@6 +findcol__B6: +//SEG185 [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=xby_minus_zpby2 + txa + sec + sbc 9 + sta 7 +//SEG186 [70] phi from findcol::@6 to findcol::@8 findcol__B8_from_B6: -//SEG189 [71] phi (byte) findcol::diff#4 = (byte) findcol::diff#0 -- register_copy +//SEG187 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#0 -- register_copy jmp findcol__B8 -//SEG190 findcol::@2 +//SEG188 findcol::@2 findcol__B2: -//SEG191 [87] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 render::chrline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_xby_then_la1 - cpx 12 +//SEG189 [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 + lda 10 + cmp 11 beq findcol__Breturn_from_B2 jmp findcol__B3 -//SEG192 addpoint +//SEG190 initscreen +initscreen: +//SEG191 [87] phi from initscreen to initscreen::@1 +initscreen__B1_from_initscreen: +//SEG192 [87] phi (byte*) initscreen::screen#2 = (word) 1024 -- zpptrby1=cowo1 + lda #<1024 + sta 3 + lda #>1024 + sta 3+1 +//SEG193 [87] phi from initscreen::@1 to initscreen::@1 +initscreen__B1_from_B1: +//SEG194 [87] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 -- register_copy +//SEG195 initscreen::@1 +initscreen__B1: +//SEG196 [88] *((byte*) initscreen::screen#2) ← (byte) 230 [ findcol::return#0 initscreen::screen#2 ] -- _star_zpptrby1=coby1 + ldy #0 + lda #230 + sta (3),y +//SEG197 [89] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ findcol::return#0 initscreen::screen#1 ] -- zpptrby1=_inc_zpptrby1 + inc 3 + bne !+ + inc 3+1 +!: +//SEG198 [90] if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 [ findcol::return#0 initscreen::screen#1 ] -- zpptrby1_lt_cowo1_then_la1 + lda 3+1 + cmp #>2048 + bcc initscreen__B1_from_B1 + bne !+ + lda 3 + cmp #<2048 + bcc initscreen__B1_from_B1 +!: +//SEG199 initscreen::@return +initscreen__Breturn: +//SEG200 [91] return [ findcol::return#0 ] + rts +//SEG201 addpoint addpoint: -//SEG193 [89] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_yby=aby +//SEG202 [93] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ findcol::return#0 addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_yby=aby sta 4096,y -//SEG194 [90] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] -- cowo1_staridx_yby=xby +//SEG203 [94] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ findcol::return#0 addpoint::idx#6 addpoint::c#6 ] -- cowo1_staridx_yby=xby txa sta 4352,y -//SEG195 [91] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] -- cowo1_staridx_yby=zpby1 +//SEG204 [95] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ findcol::return#0 ] -- cowo1_staridx_yby=zpby1 lda 2 sta 4608,y -//SEG196 addpoint::@return +//SEG205 addpoint::@return addpoint__Breturn: -//SEG197 [92] return [ findcol::return#0 ] +//SEG206 [96] return [ findcol::return#0 ] rts diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym index a110a9b1d..ee097b072 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym @@ -64,42 +64,49 @@ (label) findcol::@9 (label) findcol::@return (byte) findcol::diff -(byte) findcol::diff#0 zp byte:9 20002.0 -(byte) findcol::diff#1 zp byte:9 20002.0 -(byte~) findcol::diff#13 zp byte:8 20002.0 +(byte) findcol::diff#0 zp byte:7 20002.0 +(byte) findcol::diff#1 zp byte:7 20002.0 +(byte~) findcol::diff#13 zp byte:6 20002.0 (byte) findcol::diff#2 reg byte x 20002.0 (byte) findcol::diff#3 reg byte x 20002.0 -(byte) findcol::diff#4 zp byte:9 10001.0 +(byte) findcol::diff#4 zp byte:7 10001.0 (byte) findcol::diff#6 reg byte x 13334.666666666666 (byte) findcol::i (byte) findcol::i#1 reg byte y 15001.5 (byte) findcol::i#12 reg byte y 2631.842105263158 (byte) findcol::mincol -(byte) findcol::mincol#1 zp byte:10 10001.0 -(byte) findcol::mincol#11 zp byte:10 1250.125 -(byte) findcol::mincol#2 zp byte:10 13334.666666666666 +(byte) findcol::mincol#1 zp byte:8 10001.0 +(byte) findcol::mincol#11 zp byte:8 1250.125 +(byte) findcol::mincol#2 zp byte:8 13334.666666666666 (byte) findcol::mindiff -(byte) findcol::mindiff#10 zp byte:8 1875.1875 -(byte) findcol::mindiff#11 zp byte:8 10001.0 +(byte) findcol::mindiff#10 zp byte:6 1875.1875 +(byte) findcol::mindiff#11 zp byte:6 10001.0 (byte) findcol::return -(byte) findcol::return#0 zp byte:10 152.80555555555554 +(byte) findcol::return#0 zp byte:8 144.76315789473685 (byte) findcol::x -(byte) findcol::x#0 zp byte:11 1577.1153846153845 +(byte) findcol::x#0 zp byte:9 1577.1153846153845 (byte) findcol::xp -(byte) findcol::xp#0 reg byte a 10001.0 +(byte) findcol::xp#0 reg byte x 10001.0 (byte) findcol::y -(byte) findcol::y#0 zp byte:12 1640.2 +(byte) findcol::y#0 zp byte:10 1640.2 (byte) findcol::yp -(byte) findcol::yp#0 reg byte x 6250.625 +(byte) findcol::yp#0 zp byte:11 6250.625 +(void()) initscreen() +(label) initscreen::@1 +(label) initscreen::@return +(byte*) initscreen::screen +(byte*) initscreen::screen#1 zp ptr byte:3 16.5 +(byte*) initscreen::screen#2 zp ptr byte:3 16.5 (void()) main() (label) main::@1 (label) main::@10 +(label) main::@11 (label) main::@3 (label) main::@4 (label) main::@5 (label) main::@6 (label) main::@7 -(label) main::@9 +(label) main::@8 (label) main::@return (byte) numpoints (void()) render() @@ -108,30 +115,26 @@ (label) render::@3 (label) render::@5 (label) render::@return -(byte*) render::chrline -(byte*) render::chrline#1 zp ptr byte:5 50.5 -(byte*) render::chrline#2 zp ptr byte:5 36.45454545454545 (byte) render::col (byte) render::col#0 reg byte a 2002.0 (byte*) render::colline (byte*) render::colline#1 zp ptr byte:3 67.33333333333333 -(byte*) render::colline#2 zp ptr byte:3 35.38235294117647 +(byte*) render::colline#2 zp ptr byte:3 37.59375 (byte) render::x -(byte) render::x#1 zp byte:7 1501.5 -(byte) render::x#2 zp byte:7 166.83333333333334 +(byte) render::x#1 zp byte:5 1501.5 +(byte) render::x#2 zp byte:5 138.06896551724137 (byte) render::y (byte) render::y#1 zp byte:2 151.5 -(byte) render::y#2 zp byte:2 34.371428571428574 +(byte) render::y#2 zp byte:2 36.45454545454545 zp byte:2 [ render::y#2 render::y#1 addpoint::c#6 ] -zp ptr byte:3 [ render::colline#2 render::colline#1 ] -zp ptr byte:5 [ render::chrline#2 render::chrline#1 ] -zp byte:7 [ render::x#2 render::x#1 ] +zp ptr byte:3 [ render::colline#2 render::colline#1 initscreen::screen#2 initscreen::screen#1 ] +zp byte:5 [ render::x#2 render::x#1 ] reg byte y [ findcol::i#12 findcol::i#1 ] -zp byte:8 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] -zp byte:9 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] +zp byte:6 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] +zp byte:7 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] reg byte x [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] -zp byte:10 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] +zp byte:8 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] reg byte a [ addpoint::x#6 ] reg byte y [ addpoint::idx#6 ] reg byte x [ addpoint::y#6 ] @@ -155,10 +158,10 @@ reg byte a [ animate::$21 ] reg byte a [ animate::$22 ] reg byte a [ animate::$24 ] reg byte a [ animate::$25 ] -zp byte:11 [ findcol::x#0 ] -zp byte:12 [ findcol::y#0 ] +zp byte:9 [ findcol::x#0 ] +zp byte:10 [ findcol::y#0 ] reg byte a [ render::col#0 ] -reg byte a [ findcol::xp#0 ] -reg byte x [ findcol::yp#0 ] +reg byte x [ findcol::xp#0 ] +zp byte:11 [ findcol::yp#0 ] reg byte a [ findcol::$10 ] reg byte a [ findcol::$8 ] diff --git a/src/main/java/dk/camelot64/kickc/test/voronoi.kc b/src/main/java/dk/camelot64/kickc/test/voronoi.kc index d3ef90a8a..af293d7d5 100644 --- a/src/main/java/dk/camelot64/kickc/test/voronoi.kc +++ b/src/main/java/dk/camelot64/kickc/test/voronoi.kc @@ -21,6 +21,7 @@ void main() { addpoint(3, 34, 2, 4); addpoint(4, 21, 17, 5); addpoint(5, 31, 22, 7); + initscreen(); do { render(); animate(); @@ -60,20 +61,25 @@ void addpoint(byte idx, byte x, byte y, byte c) { COLS[idx] = c; } +void initscreen() { + byte* screen = SCREEN; + do { + *screen = FILL; + } while(++screen<$0800) + +} + void render() { - byte* chrline = SCREEN; byte* colline = COLORS; byte y=0; do { - byte x=0; + byte x=0; do { byte col = findcol(x, y); colline[x] = col; - chrline[x] = FILL; } while(++x < 40) - chrline = chrline+40; colline = colline+40; - } while(++y < 25) + } while(++y < 25) } byte findcol(byte x, byte y) {