1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-12-25 11:32:07 +00:00

Scrren init moved out of main loop.

This commit is contained in:
jespergravgaard 2017-08-07 21:40:32 +02:00
parent 3eaed1c946
commit 1f4ea4f68c
7 changed files with 2631 additions and 2282 deletions

View File

@ -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();

View File

@ -0,0 +1,8 @@
lda {zpptrby1}+1
cmp #>{cowo1}
bcc {la1}
bne !+
lda {zpptrby1}
cmp #<{cowo1}
bcc {la1}
!:

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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 ]

View File

@ -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,8 +61,15 @@ 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 {
@ -69,9 +77,7 @@ void render() {
do {
byte col = findcol(x, y);
colline[x] = col;
chrline[x] = FILL;
} while(++x < 40)
chrline = chrline+40;
colline = colline+40;
} while(++y < 25)
}