1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-10-11 12:23:45 +00:00

Working on inline asm

This commit is contained in:
jespergravgaard 2017-11-04 14:15:44 +01:00
parent bcef1c3662
commit 3d607aba7f
16 changed files with 14813 additions and 6002 deletions

View File

@ -0,0 +1,37 @@
package dk.camelot64.kickc.asm;
/** Set the program counter */
public class AsmBasicUpstart implements AsmLine {
private final String function;
private int index;
public AsmBasicUpstart(String function) {
this.function = function;
}
@Override
public int getLineBytes() {
return 0;
}
@Override
public double getLineCycles() {
return 0;
}
@Override
public String getAsm() {
return ":BasicUpstart("+function+")";
}
@Override
public int getIndex() {
return index;
}
@Override
public void setIndex(int index) {
this.index = index;
}
}

View File

@ -1,5 +1,7 @@
package dk.camelot64.kickc.asm;
import dk.camelot64.kickc.fragment.AsmFragment;
/** A label declaration .label lbl = val */
public class AsmLabelDecl implements AsmLine {
private final String name;
@ -24,7 +26,7 @@ public class AsmLabelDecl implements AsmLine {
@Override
public String getAsm() {
return ".label "+name+" = "+address;
return ".label "+name+" = "+ AsmFragment.getAsmNumber(address);
}
@Override

View File

@ -0,0 +1,42 @@
package dk.camelot64.kickc.asm;
import dk.camelot64.kickc.NumberParser;
import dk.camelot64.kickc.fragment.AsmFragment;
/** Set the program counter */
public class AsmSetPc implements AsmLine {
private final String name;
private final int address;
private int index;
public AsmSetPc(String name, int address) {
this.name = name;
this.address = address;
}
@Override
public int getLineBytes() {
return 0;
}
@Override
public double getLineCycles() {
return 0;
}
@Override
public String getAsm() {
return ".pc = "+ AsmFragment.getAsmNumber(address)+" \""+name+"\"";
}
@Override
public int getIndex() {
return index;
}
@Override
public void setIndex(int index) {
this.index = index;
}
}

View File

@ -486,7 +486,6 @@ public class AsmFragment {
return getAsmParamName(varScope, asmName, getCodeScope());
}
/**
* Get the ASM parameter for a specific bound constant
* @param boundVar The constant

View File

@ -0,0 +1,15 @@
package dk.camelot64.kickc.model;
/** Inline ASM code */
public class StatementAsm extends StatementBase {
public StatementAsm(Integer index) {
super(index);
}
@Override
public String toString(Program program) {
return null;
}
}

View File

@ -25,9 +25,7 @@ public abstract class StatementBase implements Statement {
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
StatementBase that = (StatementBase) o;
return index != null ? index.equals(that.index) : that.index == null;
}
@ -60,4 +58,5 @@ public abstract class StatementBase implements Statement {
str.append("]");
return str.toString();
}
}

View File

@ -47,6 +47,7 @@ public class Pass1GenerateStatementSequence extends KickCBaseVisitor<Object> {
public void generate(KickCParser.FileContext file) {
this.visit(file);
sequence.addStatement(new StatementCall(null, "main", new ArrayList<RValue>()));
}
@Override

View File

@ -57,13 +57,13 @@ public class Pass1TypeInference {
} else if(statement instanceof StatementCall) {
StatementCall call = (StatementCall) statement;
LValue lValue = call.getlValue();
String procedureName = call.getProcedureName();
Procedure procedure = scopes.peek().getProcedure(procedureName);
call.setProcedure(procedure.getRef());
if(procedure.getParameters().size()!=call.getParameters().size()) {
throw new RuntimeException("Wrong number of parameters in call. Expected " +procedure.getParameters().size()+". "+statement.toString());
}
if(lValue instanceof VariableRef) {
String procedureName = call.getProcedureName();
Procedure procedure = scopes.peek().getProcedure(procedureName);
call.setProcedure(procedure.getRef());
if(procedure.getParameters().size()!=call.getParameters().size()) {
throw new RuntimeException("Wrong number of parameters in call. Expected " +procedure.getParameters().size()+". "+statement.toString());
}
Variable lValueVar = programScope.getVariable((VariableRef) lValue);
lValueVar.setTypeInferred(procedure.getReturnType());
}

View File

@ -29,6 +29,11 @@ public class Pass4CodeGeneration {
AsmProgram asm = new AsmProgram();
ScopeRef currentScope = ScopeRef.ROOT;
asm.startSegment(null, "Basic Upstart");
asm.addLine(new AsmSetPc("Basic", 0x0801));
asm.addLine(new AsmBasicUpstart("main"));
asm.addLine(new AsmSetPc("Program", 0x080d));
// Generate global ZP labels
asm.startSegment(null, "Global Constants & labels");
addConstants(asm, currentScope);

View File

@ -24,6 +24,10 @@ public class TestErrors extends TestCase {
helper = new ReferenceHelper("dk/camelot64/kickc/test/ref/");
}
public void testOverlapAllocation() throws IOException, URISyntaxException {
compileAndCompare("overlap-allocation");
}
public void testIncD020() throws IOException, URISyntaxException {
compileAndCompare("incd020");
}

View File

@ -56,21 +56,32 @@ void line(byte x0, byte x1, byte y0, byte y1) {
if(yd<xd) {
line_xdyi(x0, y0, x1, xd, yd);
} else {
plot(x0, y0);
plot(x1, y1);
line_ydxi(y0, x0, y1, yd, xd);
}
} else {
plot(x0, y0);
plot(x1, y1);
yd = y0-y1;
if(yd<xd) {
line_xdyd(x0, y0, x1, xd, yd);
} else {
line_ydxd(y1, x1, y0, yd, xd);
}
}
} else {
xd = x1-x0;
xd = x0-x1;
if(y0<y1) {
plot(x0, y0);
plot(x1, y1);
yd = y1-y0;
if(yd<xd) {
line_xdyd(x1, y1, x0, xd, yd);
} else {
line_ydxd(y0, x0, y1, yd, xd);
}
} else {
plot(x0, y0);
plot(x1, y1);
yd = y0-y1;
if(yd<xd) {
line_xdyi(x1, y1, x0, xd, yd);
} else {
line_ydxi(y1, x1, y0, yd, xd);
}
}
}
}
@ -88,6 +99,45 @@ void line_xdyi(byte x, byte y, byte x1, byte xd, byte yd) {
} while (x<(x1+1))
}
void line_xdyd(byte x, byte y, byte x1, byte xd, byte yd) {
byte e = yd>>1;
do {
plot(x,y);
x = x + 1;
e = e+yd;
if(xd<e) {
y = y-1;
e = e - xd;
}
} while (x<(x1+1))
}
void line_ydxi(byte y, byte x, byte y1, byte yd, byte xd) {
byte e = xd>>1;
do {
plot(x,y);
y = y + 1;
e = e+xd;
if(yd<e) {
x = x+1;
e = e - yd;
}
} while (y<(y1+1))
}
void line_ydxd(byte y, byte x, byte y1, byte yd, byte xd) {
byte e = xd>>1;
do {
plot(x,y);
y = y + 1;
e = e+xd;
if(yd<e) {
x = x-1;
e = e - yd;
}
} while (y<(y1+1))
}
void plot(byte x, byte y) {
byte* plotter_x = 0;
byte* plotter_y = 0;

View File

@ -0,0 +1,19 @@
// Allocates ZP to j/k-variables even though all of i, j, k could be allocates to x and be more efficient.
// Reason: Pass4RegisterUpliftCombinations.isAllocationOverlapping() believes i/j/k variables overlaps insode plot()
byte* SCREEN = $0400;
void main() {
for(byte i : 0..10) {
plot(i);
}
for(byte j : 0..10) {
plot(j);
}
for(byte k : 0..10) {
plot(k);
}
}
void plot(byte x) {
SCREEN[x] = '*';
}

View File

@ -58,10 +58,9 @@ lines: {
lda lines_y+1,x
tax
sty line.x0
lda _2
sta line.x1
ldy _3
stx line.y1
ldy _2
lda _3
sta line.y0
jsr line
inc l
lda l
@ -71,73 +70,183 @@ lines: {
}
line: {
.label x0 = 5
.label x1 = 8
.label y1 = 9
.label xd = 10
lda x0
cmp x1
bcs b1
lda x1
.label y0 = 3
.label xd = 8
.label yd = 4
cpy x0
bcc b1
tya
sec
sbc x0
sta xd
cpy y1
bcs b2
sty $ff
lda y1
cpx y0
bcc b2
txa
sec
sbc $ff
tax
cpx xd
sbc y0
sta yd
lda yd
cmp xd
bcs b3
lda x0
sta line_xdyi.x
sty line_xdyi.y
lda x1
sta line_xdyi.x1
stx line_xdyi.yd
lda y0
sta line_xdyi.y
sty line_xdyi.x1
lda xd
sta line_xdyi.xd
lda yd
sta line_xdyi.yd
jsr line_xdyi
breturn:
rts
b3:
ldx x0
jsr plot
ldx x1
ldy y1
jsr plot
lda y0
sta line_ydxi.y
lda x0
sta line_ydxi.x
stx line_ydxi.y1
lda xd
sta line_ydxi.xd
jsr line_ydxi
jmp breturn
b2:
ldx x0
jsr plot
ldx x1
ldy y1
jsr plot
stx $ff
lda y0
sec
sbc $ff
sta yd
lda yd
cmp xd
bcs b6
lda x0
sta line_xdyd.x
lda y0
sta line_xdyd.y
sty line_xdyd.x1
lda xd
sta line_xdyd.xd
lda yd
sta line_xdyd.yd
jsr line_xdyd
jmp breturn
b6:
stx line_ydxd.y
sty line_ydxd.x
lda y0
sta line_ydxd.y1
lda yd
sta line_ydxd.yd
lda xd
sta line_ydxd.xd
jsr line_ydxd
jmp breturn
b1:
lda x1
sty $ff
lda x0
sec
sbc x0
cpy y1
bcs b7
ldx x0
jsr plot
ldx x1
ldy y1
jsr plot
sbc $ff
sta xd
cpx y0
bcc b9
txa
sec
sbc y0
sta yd
lda yd
cmp xd
bcs b10
sty line_xdyd.x
stx line_xdyd.y
lda x0
sta line_xdyd.x1
lda xd
sta line_xdyd.xd
lda yd
sta line_xdyd.yd
jsr line_xdyd
jmp breturn
b7:
ldx x0
jsr plot
ldx x1
ldy y1
jsr plot
b10:
lda y0
sta line_ydxd.y
lda x0
sta line_ydxd.x
stx line_ydxd.y1
lda yd
sta line_ydxd.yd
lda xd
sta line_ydxd.xd
jsr line_ydxd
jmp breturn
b9:
stx $ff
lda y0
sec
sbc $ff
sta yd
lda yd
cmp xd
bcs b13
sty line_xdyi.x
stx line_xdyi.y
lda x0
sta line_xdyi.x1
lda xd
sta line_xdyi.xd
lda yd
sta line_xdyi.yd
jsr line_xdyi
jmp breturn
b13:
stx line_ydxi.y
sty line_ydxi.x
lda y0
sta line_ydxi.y1
lda xd
sta line_ydxi.xd
jsr line_ydxi
jmp breturn
}
line_ydxi: {
.label y = 7
.label x = 6
.label y1 = 5
.label yd = 4
.label xd = 3
.label e = 8
lda xd
lsr
sta e
b1:
ldx x
ldy y
jsr plot
inc y
lda e
clc
adc xd
sta e
lda yd
cmp e
bcs b2
inc x
lda e
sec
sbc yd
sta e
b2:
lda y1
clc
adc #1
cmp y
bcs b1
rts
}
plot: {
.label _5 = 15
.label plotter_x = 6
.label plotter_y = 13
.label plotter = 6
.label _5 = 31
.label plotter_x = 27
.label plotter_y = 29
.label plotter = 27
lda plot_xhi,x
sta plotter_x+1
lda #<0
@ -166,12 +275,12 @@ plot: {
rts
}
line_xdyi: {
.label x = 3
.label y = 4
.label x = 12
.label y = 13
.label x1 = 11
.label xd = 10
.label yd = 12
.label e = 5
.label yd = 9
.label e = 14
lda yd
lsr
sta e
@ -200,9 +309,79 @@ line_xdyi: {
bcs b1
rts
}
line_ydxd: {
.label y = 19
.label x = 18
.label y1 = 17
.label yd = 16
.label xd = 15
.label e = 20
lda xd
lsr
sta e
b1:
ldx x
ldy y
jsr plot
inc y
lda e
clc
adc xd
sta e
lda yd
cmp e
bcs b2
dec x
lda e
sec
sbc yd
sta e
b2:
lda y1
clc
adc #1
cmp y
bcs b1
rts
}
line_xdyd: {
.label x = 24
.label y = 25
.label x1 = 23
.label xd = 22
.label yd = 21
.label e = 26
lda yd
lsr
sta e
b1:
ldx x
ldy y
jsr plot
inc x
lda e
clc
adc yd
sta e
lda xd
cmp e
bcs b2
dec y
lda e
sec
sbc xd
sta e
b2:
lda x1
clc
adc #1
cmp x
bcs b1
rts
}
init_plot_tables: {
.label _6 = 2
.label yoffs = 6
.label yoffs = 27
ldy #$80
ldx #0
b1:
@ -256,8 +435,8 @@ init_plot_tables: {
jmp b2
}
init_screen: {
.label b = 6
.label c = 6
.label b = 27
.label c = 27
lda #<BITMAP
sta b
lda #>BITMAP

View File

@ -1,10 +1,10 @@
@begin: scope:[] from
to:@7
@7: scope:[] from @begin
to:@10
@10: scope:[] from @begin
[0] call main param-assignment [ ]
to:@end
@end: scope:[] from @7
main: scope:[main] from @7
@end: scope:[] from @10
main: scope:[main] from @10
[1] *((const byte*) BGCOL#0) ← (byte) 0 [ ]
[2] *((const byte*) FGCOL#0) ← (byte) 0 [ ]
[3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ]
@ -47,177 +47,312 @@ lines::@return: scope:[lines] from lines::@3
to:@return
line: scope:[line] from lines::@1
[24] if((byte) line::x0#0>=(byte) line::x1#0) goto line::@1 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 ]
to:line::@9
line::@9: scope:[line] from line
to:line::@15
line::@15: scope:[line] from line
[25] (byte) line::xd#1 ← (byte) line::x1#0 - (byte) line::x0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ]
[26] if((byte) line::y0#0>=(byte) line::y1#0) goto line::@2 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ]
to:line::@10
line::@10: scope:[line] from line::@9
[27] (byte) line::yd#0 ← (byte) line::y1#0 - (byte) line::y0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ]
[28] if((byte) line::yd#0>=(byte) line::xd#1) goto line::@3 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ]
to:line::@11
line::@11: scope:[line] from line::@10
[29] (byte) line_xdyi::x#0 ← (byte) line::x0#0 [ line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_xdyi::x#0 ]
[30] (byte) line_xdyi::y#0 ← (byte) line::y0#0 [ line::x1#0 line::xd#1 line::yd#0 line_xdyi::x#0 line_xdyi::y#0 ]
[31] (byte) line_xdyi::x1#0 ← (byte) line::x1#0 [ line::xd#1 line::yd#0 line_xdyi::x#0 line_xdyi::y#0 line_xdyi::x1#0 ]
[32] (byte) line_xdyi::xd#0 ← (byte) line::xd#1 [ line::yd#0 line_xdyi::x#0 line_xdyi::y#0 line_xdyi::x1#0 line_xdyi::xd#0 ]
[33] (byte) line_xdyi::yd#0 ← (byte) line::yd#0 [ line_xdyi::x#0 line_xdyi::y#0 line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 ]
to:line::@16
line::@16: scope:[line] from line::@15
[27] (byte) line::yd#1 ← (byte) line::y1#0 - (byte) line::y0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ]
[28] if((byte) line::yd#1>=(byte) line::xd#1) goto line::@3 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ]
to:line::@17
line::@17: scope:[line] from line::@16
[29] (byte) line_xdyi::x#0 ← (byte) line::x0#0 [ line::x1#0 line::y0#0 line::xd#1 line::yd#1 line_xdyi::x#0 ]
[30] (byte) line_xdyi::y#0 ← (byte) line::y0#0 [ line::x1#0 line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 ]
[31] (byte) line_xdyi::x1#0 ← (byte) line::x1#0 [ line::xd#1 line::yd#1 line_xdyi::x#0 line_xdyi::y#0 line_xdyi::x1#0 ]
[32] (byte) line_xdyi::xd#0 ← (byte) line::xd#1 [ line::yd#1 line_xdyi::x#0 line_xdyi::y#0 line_xdyi::x1#0 line_xdyi::xd#0 ]
[33] (byte) line_xdyi::yd#0 ← (byte) line::yd#1 [ line_xdyi::x#0 line_xdyi::y#0 line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 ]
[34] call line_xdyi param-assignment [ ]
to:line::@return
line::@return: scope:[line] from line::@11 line::@17 line::@19 line::@22 line::@24
line::@return: scope:[line] from line::@10 line::@13 line::@17 line::@20 line::@24 line::@27 line::@3 line::@6
[35] return [ ]
to:@return
line::@3: scope:[line] from line::@10
[36] (byte) plot::x#2 ← (byte) line::x0#0 [ line::x1#0 line::y0#0 line::y1#0 plot::x#2 ]
[37] (byte) plot::y#2 ← (byte) line::y0#0 [ line::x1#0 line::y1#0 plot::x#2 plot::y#2 ]
[38] call plot param-assignment [ line::x1#0 line::y1#0 ]
to:line::@19
line::@19: scope:[line] from line::@3
[39] (byte) plot::x#3 ← (byte) line::x1#0 [ line::y1#0 plot::x#3 ]
[40] (byte) plot::y#3 ← (byte) line::y1#0 [ plot::x#3 plot::y#3 ]
[41] call plot param-assignment [ ]
line::@3: scope:[line] from line::@16
[36] (byte) line_ydxi::y#0 ← (byte) line::y0#0 [ line::x0#0 line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 ]
[37] (byte) line_ydxi::x#0 ← (byte) line::x0#0 [ line::y1#0 line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 ]
[38] (byte) line_ydxi::y1#0 ← (byte) line::y1#0 [ line::xd#1 line::yd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 ]
[39] (byte) line_ydxi::yd#0 ← (byte) line::yd#1 [ line::xd#1 line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 line_ydxi::yd#0 ]
[40] (byte) line_ydxi::xd#0 ← (byte) line::xd#1 [ line_ydxi::y#0 line_ydxi::x#0 line_ydxi::y1#0 line_ydxi::yd#0 line_ydxi::xd#0 ]
[41] call line_ydxi param-assignment [ ]
to:line::@return
line::@2: scope:[line] from line::@9
[42] (byte) plot::x#0 ← (byte) line::x0#0 [ line::x1#0 line::y0#0 line::y1#0 plot::x#0 ]
[43] (byte) plot::y#0 ← (byte) line::y0#0 [ line::x1#0 line::y1#0 plot::x#0 plot::y#0 ]
[44] call plot param-assignment [ line::x1#0 line::y1#0 ]
to:line::@17
line::@17: scope:[line] from line::@2
[45] (byte) plot::x#1 ← (byte) line::x1#0 [ line::y1#0 plot::x#1 ]
[46] (byte) plot::y#1 ← (byte) line::y1#0 [ plot::x#1 plot::y#1 ]
[47] call plot param-assignment [ ]
line::@2: scope:[line] from line::@15
[42] (byte) line::yd#0 ← (byte) line::y0#0 - (byte) line::y1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ]
[43] if((byte) line::yd#0>=(byte) line::xd#1) goto line::@6 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ]
to:line::@20
line::@20: scope:[line] from line::@2
[44] (byte) line_xdyd::x#0 ← (byte) line::x0#0 [ line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_xdyd::x#0 ]
[45] (byte) line_xdyd::y#0 ← (byte) line::y0#0 [ line::x1#0 line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 ]
[46] (byte) line_xdyd::x1#0 ← (byte) line::x1#0 [ line::xd#1 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 ]
[47] (byte) line_xdyd::xd#0 ← (byte) line::xd#1 [ line::yd#0 line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 line_xdyd::xd#0 ]
[48] (byte) line_xdyd::yd#0 ← (byte) line::yd#0 [ line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 line_xdyd::xd#0 line_xdyd::yd#0 ]
[49] call line_xdyd param-assignment [ ]
to:line::@return
line::@6: scope:[line] from line::@2
[50] (byte) line_ydxd::y#0 ← (byte) line::y1#0 [ line::x1#0 line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 ]
[51] (byte) line_ydxd::x#0 ← (byte) line::x1#0 [ line::y0#0 line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 ]
[52] (byte) line_ydxd::y1#0 ← (byte) line::y0#0 [ line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 ]
[53] (byte) line_ydxd::yd#0 ← (byte) line::yd#0 [ line::xd#1 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 ]
[54] (byte) line_ydxd::xd#0 ← (byte) line::xd#1 [ line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 line_ydxd::xd#0 ]
[55] call line_ydxd param-assignment [ ]
to:line::@return
line::@1: scope:[line] from line
[48] (byte) line::xd#0 ← (byte) line::x1#0 - (byte) line::x0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 ]
[49] if((byte) line::y0#0>=(byte) line::y1#0) goto line::@7 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 ]
to:line::@15
line::@15: scope:[line] from line::@1
[50] (byte) plot::x#6 ← (byte) line::x0#0 [ line::x1#0 line::y0#0 line::y1#0 plot::x#6 ]
[51] (byte) plot::y#6 ← (byte) line::y0#0 [ line::x1#0 line::y1#0 plot::x#6 plot::y#6 ]
[52] call plot param-assignment [ line::x1#0 line::y1#0 ]
[56] (byte) line::xd#0 ← (byte) line::x0#0 - (byte) line::x1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 ]
[57] if((byte) line::y0#0>=(byte) line::y1#0) goto line::@9 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 ]
to:line::@23
line::@23: scope:[line] from line::@1
[58] (byte) line::yd#3 ← (byte) line::y1#0 - (byte) line::y0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ]
[59] if((byte) line::yd#3>=(byte) line::xd#0) goto line::@10 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ]
to:line::@24
line::@24: scope:[line] from line::@15
[53] (byte) plot::x#7 ← (byte) line::x1#0 [ line::y1#0 plot::x#7 ]
[54] (byte) plot::y#7 ← (byte) line::y1#0 [ plot::x#7 plot::y#7 ]
[55] call plot param-assignment [ ]
line::@24: scope:[line] from line::@23
[60] (byte) line_xdyd::x#1 ← (byte) line::x1#0 [ line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_xdyd::x#1 ]
[61] (byte) line_xdyd::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 ]
[62] (byte) line_xdyd::x1#1 ← (byte) line::x0#0 [ line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 ]
[63] (byte) line_xdyd::xd#1 ← (byte) line::xd#0 [ line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 line_xdyd::xd#1 ]
[64] (byte) line_xdyd::yd#1 ← (byte) line::yd#3 [ line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 line_xdyd::xd#1 line_xdyd::yd#1 ]
[65] call line_xdyd param-assignment [ ]
to:line::@return
line::@7: scope:[line] from line::@1
[56] (byte) plot::x#4 ← (byte) line::x0#0 [ line::x1#0 line::y0#0 line::y1#0 plot::x#4 ]
[57] (byte) plot::y#4 ← (byte) line::y0#0 [ line::x1#0 line::y1#0 plot::x#4 plot::y#4 ]
[58] call plot param-assignment [ line::x1#0 line::y1#0 ]
to:line::@22
line::@22: scope:[line] from line::@7
[59] (byte) plot::x#5 ← (byte) line::x1#0 [ line::y1#0 plot::x#5 ]
[60] (byte) plot::y#5 ← (byte) line::y1#0 [ plot::x#5 plot::y#5 ]
[61] call plot param-assignment [ ]
line::@10: scope:[line] from line::@23
[66] (byte) line_ydxd::y#1 ← (byte) line::y0#0 [ line::x0#0 line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 ]
[67] (byte) line_ydxd::x#1 ← (byte) line::x0#0 [ line::y1#0 line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 ]
[68] (byte) line_ydxd::y1#1 ← (byte) line::y1#0 [ line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 ]
[69] (byte) line_ydxd::yd#1 ← (byte) line::yd#3 [ line::xd#0 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 ]
[70] (byte) line_ydxd::xd#1 ← (byte) line::xd#0 [ line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 line_ydxd::xd#1 ]
[71] call line_ydxd param-assignment [ ]
to:line::@return
plot: scope:[plot] from line::@15 line::@17 line::@19 line::@2 line::@22 line::@24 line::@3 line::@7 line_xdyi::@1
[62] (byte) plot::y#9 ← phi( line::@15/(byte) plot::y#6 line::@17/(byte) plot::y#1 line::@19/(byte) plot::y#3 line::@2/(byte) plot::y#0 line::@22/(byte) plot::y#5 line::@24/(byte) plot::y#7 line::@3/(byte) plot::y#2 line::@7/(byte) plot::y#4 line_xdyi::@1/(byte) plot::y#8 ) [ plot::x#9 plot::y#9 ]
[62] (byte) plot::x#9 ← phi( line::@15/(byte) plot::x#6 line::@17/(byte) plot::x#1 line::@19/(byte) plot::x#3 line::@2/(byte) plot::x#0 line::@22/(byte) plot::x#5 line::@24/(byte) plot::x#7 line::@3/(byte) plot::x#2 line::@7/(byte) plot::x#4 line_xdyi::@1/(byte) plot::x#8 ) [ plot::x#9 plot::y#9 ]
[63] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#9 [ plot::x#9 plot::y#9 plot::$0 ]
[64] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#9 plot::y#9 plot::plotter_x#1 ]
[65] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#9 [ plot::x#9 plot::y#9 plot::plotter_x#1 plot::$1 ]
[66] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#9 plot::y#9 plot::plotter_x#2 ]
[67] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#9 [ plot::x#9 plot::y#9 plot::plotter_x#2 plot::$2 ]
[68] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#9 plot::y#9 plot::plotter_x#2 plot::plotter_y#1 ]
[69] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#9 [ plot::x#9 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ]
[70] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#9 plot::plotter_x#2 plot::plotter_y#2 ]
[71] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#9 plot::plotter#0 ]
[72] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#9 plot::plotter#0 plot::$5 ]
[73] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#9 [ plot::plotter#0 plot::$5 plot::$6 ]
[74] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ]
[75] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ]
line::@9: scope:[line] from line::@1
[72] (byte) line::yd#10 ← (byte) line::y0#0 - (byte) line::y1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ]
[73] if((byte) line::yd#10>=(byte) line::xd#0) goto line::@13 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ]
to:line::@27
line::@27: scope:[line] from line::@9
[74] (byte) line_xdyi::x#1 ← (byte) line::x1#0 [ line::x0#0 line::y1#0 line::xd#0 line::yd#10 line_xdyi::x#1 ]
[75] (byte) line_xdyi::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 ]
[76] (byte) line_xdyi::x1#1 ← (byte) line::x0#0 [ line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 ]
[77] (byte) line_xdyi::xd#1 ← (byte) line::xd#0 [ line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 line_xdyi::xd#1 ]
[78] (byte) line_xdyi::yd#1 ← (byte) line::yd#10 [ line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 line_xdyi::xd#1 line_xdyi::yd#1 ]
[79] call line_xdyi param-assignment [ ]
to:line::@return
line::@13: scope:[line] from line::@9
[80] (byte) line_ydxi::y#1 ← (byte) line::y1#0 [ line::x1#0 line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 ]
[81] (byte) line_ydxi::x#1 ← (byte) line::x1#0 [ line::y0#0 line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 ]
[82] (byte) line_ydxi::y1#1 ← (byte) line::y0#0 [ line::xd#0 line::yd#10 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 ]
[83] (byte) line_ydxi::yd#1 ← (byte) line::yd#10 [ line::xd#0 line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 line_ydxi::yd#1 ]
[84] (byte) line_ydxi::xd#1 ← (byte) line::xd#0 [ line_ydxi::y#1 line_ydxi::x#1 line_ydxi::y1#1 line_ydxi::yd#1 line_ydxi::xd#1 ]
[85] call line_ydxi param-assignment [ ]
to:line::@return
line_ydxi: scope:[line_ydxi] from line::@13 line::@3
[86] (byte) line_ydxi::y1#6 ← phi( line::@13/(byte) line_ydxi::y1#1 line::@3/(byte) line_ydxi::y1#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ]
[86] (byte) line_ydxi::yd#5 ← phi( line::@13/(byte) line_ydxi::yd#1 line::@3/(byte) line_ydxi::yd#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ]
[86] (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ]
[86] (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ]
[86] (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ]
[87] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ]
to:line_ydxi::@1
line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2
[88] (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ]
[88] (byte) line_ydxi::y#3 ← phi( line_ydxi/(byte) line_ydxi::y#6 line_ydxi::@2/(byte) line_ydxi::y#2 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ]
[88] (byte) line_ydxi::x#3 ← phi( line_ydxi/(byte) line_ydxi::x#5 line_ydxi::@2/(byte) line_ydxi::x#6 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ]
[89] (byte) plot::x#2 ← (byte) line_ydxi::x#3 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#2 ]
[90] (byte) plot::y#2 ← (byte) line_ydxi::y#3 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#2 plot::y#2 ]
[91] call plot param-assignment [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ]
to:line_ydxi::@5
line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1
[92] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ]
[93] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ]
[94] if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ]
to:line_ydxi::@3
line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5
[95] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ]
[96] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ]
to:line_ydxi::@2
line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5
[97] (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ]
[97] (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ]
[98] (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ]
[99] if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ]
to:line_ydxi::@return
line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2
[100] return [ ]
to:@return
plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1
[101] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) [ plot::x#4 plot::y#4 ]
[101] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) [ plot::x#4 plot::y#4 ]
[102] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ]
[103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ]
[104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ]
[105] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#2 ]
[106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ]
[107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ]
[108] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ]
[109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ]
[110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ]
[111] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#4 plot::plotter#0 plot::$5 ]
[112] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 plot::$6 ]
[113] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ]
[114] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ]
to:plot::@return
plot::@return: scope:[plot] from plot
[76] return [ ]
[115] return [ ]
to:@return
line_xdyi: scope:[line_xdyi] from line::@11
[77] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#0 >> (byte) 1 [ line_xdyi::x#0 line_xdyi::y#0 line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::e#0 ]
line_xdyi: scope:[line_xdyi] from line::@17 line::@27
[116] (byte) line_xdyi::x1#6 ← phi( line::@17/(byte) line_xdyi::x1#0 line::@27/(byte) line_xdyi::x1#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ]
[116] (byte) line_xdyi::xd#5 ← phi( line::@17/(byte) line_xdyi::xd#0 line::@27/(byte) line_xdyi::xd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ]
[116] (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ]
[116] (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ]
[116] (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ]
[117] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ]
to:line_xdyi::@1
line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2
[78] (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#3 ]
[78] (byte) line_xdyi::y#2 ← phi( line_xdyi/(byte) line_xdyi::y#0 line_xdyi::@2/(byte) line_xdyi::y#5 ) [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#3 ]
[78] (byte) line_xdyi::x#2 ← phi( line_xdyi/(byte) line_xdyi::x#0 line_xdyi::@2/(byte) line_xdyi::x#1 ) [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#3 ]
[79] (byte) plot::x#8 ← (byte) line_xdyi::x#2 [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 plot::x#8 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#3 ]
[80] (byte) plot::y#8 ← (byte) line_xdyi::y#2 [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 plot::x#8 plot::y#8 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#3 ]
[81] call plot param-assignment [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#3 ]
[118] (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ]
[118] (byte) line_xdyi::y#3 ← phi( line_xdyi/(byte) line_xdyi::y#5 line_xdyi::@2/(byte) line_xdyi::y#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ]
[118] (byte) line_xdyi::x#3 ← phi( line_xdyi/(byte) line_xdyi::x#6 line_xdyi::@2/(byte) line_xdyi::x#2 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ]
[119] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ]
[120] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ]
[121] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ]
to:line_xdyi::@5
line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1
[82] (byte) line_xdyi::x#1 ← (byte) line_xdyi::x#2 + (byte) 1 [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::y#2 line_xdyi::e#3 line_xdyi::x#1 ]
[83] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#0 [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::y#2 line_xdyi::x#1 line_xdyi::e#1 ]
[84] if((byte) line_xdyi::xd#0>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::y#2 line_xdyi::x#1 line_xdyi::e#1 ]
[122] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ]
[123] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ]
[124] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ]
to:line_xdyi::@3
line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5
[85] (byte) line_xdyi::y#1 ← (byte) line_xdyi::y#2 + (byte) 1 [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::x#1 line_xdyi::e#1 line_xdyi::y#1 ]
[86] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#0 [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::e#2 ]
[125] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ]
[126] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ]
to:line_xdyi::@2
line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5
[87] (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::x#1 line_xdyi::y#5 line_xdyi::e#6 ]
[87] (byte) line_xdyi::y#5 ← phi( line_xdyi::@3/(byte) line_xdyi::y#1 line_xdyi::@5/(byte) line_xdyi::y#2 ) [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::x#1 line_xdyi::y#5 line_xdyi::e#6 ]
[88] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#0 + (byte) 1 [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::x#1 line_xdyi::y#5 line_xdyi::e#6 line_xdyi::$8 ]
[89] if((byte) line_xdyi::x#1<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::x1#0 line_xdyi::xd#0 line_xdyi::yd#0 line_xdyi::x#1 line_xdyi::y#5 line_xdyi::e#6 ]
[127] (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ]
[127] (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ]
[128] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ]
[129] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ]
to:line_xdyi::@return
line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2
[90] return [ ]
[130] return [ ]
to:@return
line_ydxd: scope:[line_ydxd] from line::@10 line::@6
[131] (byte) line_ydxd::y1#6 ← phi( line::@10/(byte) line_ydxd::y1#1 line::@6/(byte) line_ydxd::y1#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ]
[131] (byte) line_ydxd::yd#5 ← phi( line::@10/(byte) line_ydxd::yd#1 line::@6/(byte) line_ydxd::yd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ]
[131] (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ]
[131] (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ]
[131] (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ]
[132] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ]
to:line_ydxd::@1
line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2
[133] (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ]
[133] (byte) line_ydxd::y#3 ← phi( line_ydxd/(byte) line_ydxd::y#6 line_ydxd::@2/(byte) line_ydxd::y#2 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ]
[133] (byte) line_ydxd::x#3 ← phi( line_ydxd/(byte) line_ydxd::x#5 line_ydxd::@2/(byte) line_ydxd::x#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ]
[134] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ]
[135] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ]
[136] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ]
to:line_ydxd::@5
line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1
[137] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ]
[138] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ]
[139] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ]
to:line_ydxd::@3
line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5
[140] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ]
[141] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ]
to:line_ydxd::@2
line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5
[142] (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ]
[142] (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ]
[143] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ]
[144] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ]
to:line_ydxd::@return
line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2
[145] return [ ]
to:@return
line_xdyd: scope:[line_xdyd] from line::@20 line::@24
[146] (byte) line_xdyd::x1#6 ← phi( line::@20/(byte) line_xdyd::x1#0 line::@24/(byte) line_xdyd::x1#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ]
[146] (byte) line_xdyd::xd#5 ← phi( line::@20/(byte) line_xdyd::xd#0 line::@24/(byte) line_xdyd::xd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ]
[146] (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ]
[146] (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ]
[146] (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ]
[147] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ]
to:line_xdyd::@1
line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2
[148] (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ]
[148] (byte) line_xdyd::y#3 ← phi( line_xdyd/(byte) line_xdyd::y#5 line_xdyd::@2/(byte) line_xdyd::y#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ]
[148] (byte) line_xdyd::x#3 ← phi( line_xdyd/(byte) line_xdyd::x#6 line_xdyd::@2/(byte) line_xdyd::x#2 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ]
[149] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ]
[150] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ]
[151] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ]
to:line_xdyd::@5
line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1
[152] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ]
[153] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ]
[154] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ]
to:line_xdyd::@3
line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5
[155] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ]
[156] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ]
to:line_xdyd::@2
line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5
[157] (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ]
[157] (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ]
[158] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ]
[159] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ]
to:line_xdyd::@return
line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2
[160] return [ ]
to:@return
init_plot_tables: scope:[init_plot_tables] from main::@3
[91] phi() [ ]
[161] phi() [ ]
to:init_plot_tables::@1
init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2
[92] (byte) init_plot_tables::bit#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bit#4 ) [ init_plot_tables::x#2 init_plot_tables::bit#3 ]
[92] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bit#3 ]
[93] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bit#3 init_plot_tables::$0 ]
[94] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bit#3 ]
[95] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bit#3 ]
[96] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bit#3 [ init_plot_tables::x#2 init_plot_tables::bit#3 ]
[97] (byte) init_plot_tables::bit#1 ← (byte) init_plot_tables::bit#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bit#1 ]
[98] if((byte) init_plot_tables::bit#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ]
[162] (byte) init_plot_tables::bit#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bit#4 ) [ init_plot_tables::x#2 init_plot_tables::bit#3 ]
[162] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bit#3 ]
[163] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bit#3 init_plot_tables::$0 ]
[164] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bit#3 ]
[165] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bit#3 ]
[166] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bit#3 [ init_plot_tables::x#2 init_plot_tables::bit#3 ]
[167] (byte) init_plot_tables::bit#1 ← (byte) init_plot_tables::bit#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bit#1 ]
[168] if((byte) init_plot_tables::bit#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ]
to:init_plot_tables::@2
init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10
[99] (byte) init_plot_tables::bit#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bit#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bit#4 ]
[100] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bit#4 ]
[101] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bit#4 ]
[169] (byte) init_plot_tables::bit#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bit#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bit#4 ]
[170] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bit#4 ]
[171] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bit#4 ]
to:init_plot_tables::@3
init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4
[102] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ]
[102] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ]
[103] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ]
[104] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ]
[105] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ]
[106] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ]
[107] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ]
[108] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ]
[109] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ]
[110] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ]
[172] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ]
[172] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ]
[173] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ]
[174] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ]
[175] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ]
[176] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ]
[177] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ]
[178] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ]
[179] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ]
[180] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ]
to:init_plot_tables::@7
init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3
[111] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ]
[181] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ]
to:init_plot_tables::@4
init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7
[112] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ]
[113] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ]
[114] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ]
[182] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ]
[183] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ]
[184] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ]
to:init_plot_tables::@return
init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4
[115] return [ ]
[185] return [ ]
to:@return
init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1
to:init_plot_tables::@2
init_screen: scope:[init_screen] from main
[116] phi() [ ]
[186] phi() [ ]
to:init_screen::@1
init_screen::@1: scope:[init_screen] from init_screen init_screen::@1
[117] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ]
[118] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ]
[119] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ]
[120] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ]
[187] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ]
[188] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ]
[189] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ]
[190] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ]
to:init_screen::@2
init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2
[121] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ]
[122] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ]
[123] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ]
[124] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ]
[191] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ]
[192] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ]
[193] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ]
[194] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ]
to:init_screen::@return
init_screen::@return: scope:[init_screen] from init_screen::@2
[125] return [ ]
[195] return [ ]
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
(label) @7
(label) @10
(label) @begin
(label) @end
(byte*) BGCOL
@ -58,46 +58,89 @@
(byte) init_plot_tables::y#1 reg byte x 16.5
(byte) init_plot_tables::y#2 reg byte x 6.0
(byte*) init_plot_tables::yoffs
(byte*) init_plot_tables::yoffs#1 yoffs zp ZP_PTR_BYTE:6 22.0
(byte*) init_plot_tables::yoffs#2 yoffs zp ZP_PTR_BYTE:6 6.111111111111112
(byte*) init_plot_tables::yoffs#4 yoffs zp ZP_PTR_BYTE:6 11.0
(byte*) init_plot_tables::yoffs#1 yoffs zp ZP_PTR_BYTE:27 22.0
(byte*) init_plot_tables::yoffs#2 yoffs zp ZP_PTR_BYTE:27 6.111111111111112
(byte*) init_plot_tables::yoffs#4 yoffs zp ZP_PTR_BYTE:27 11.0
(void()) init_screen()
(label) init_screen::@1
(label) init_screen::@2
(label) init_screen::@return
(byte*) init_screen::b
(byte*) init_screen::b#1 b zp ZP_PTR_BYTE:6 16.5
(byte*) init_screen::b#2 b zp ZP_PTR_BYTE:6 16.5
(byte*) init_screen::b#1 b zp ZP_PTR_BYTE:27 16.5
(byte*) init_screen::b#2 b zp ZP_PTR_BYTE:27 16.5
(byte*) init_screen::c
(byte*) init_screen::c#1 c zp ZP_PTR_BYTE:6 16.5
(byte*) init_screen::c#2 c zp ZP_PTR_BYTE:6 16.5
(byte*) init_screen::c#1 c zp ZP_PTR_BYTE:27 16.5
(byte*) init_screen::c#2 c zp ZP_PTR_BYTE:27 16.5
(void()) line((byte) line::x0 , (byte) line::x1 , (byte) line::y0 , (byte) line::y1)
(label) line::@1
(label) line::@10
(label) line::@11
(label) line::@13
(label) line::@15
(label) line::@16
(label) line::@17
(label) line::@19
(label) line::@2
(label) line::@22
(label) line::@20
(label) line::@23
(label) line::@24
(label) line::@27
(label) line::@3
(label) line::@7
(label) line::@6
(label) line::@9
(label) line::@return
(byte) line::x0
(byte) line::x0#0 x0 zp ZP_BYTE:5 10.636363636363635
(byte) line::x0#0 x0 zp ZP_BYTE:5 5.173913043478264
(byte) line::x1
(byte) line::x1#0 x1 zp ZP_BYTE:8 4.874999999999997
(byte) line::x1#0 reg byte y 5.409090909090908
(byte) line::xd
(byte) line::xd#0 reg byte a 20.0
(byte) line::xd#1 xd zp ZP_BYTE:10 0.8571428571428571
(byte) line::xd#0 xd zp ZP_BYTE:8 0.7
(byte) line::xd#1 xd zp ZP_BYTE:8 0.7
(byte) line::y0
(byte) line::y0#0 reg byte y 8.357142857142858
(byte) line::y0#0 y0 zp ZP_BYTE:3 5.952380952380948
(byte) line::y1
(byte) line::y1#0 y1 zp ZP_BYTE:9 4.791666666666664
(byte) line::y1#0 reg byte x 6.249999999999996
(byte) line::yd
(byte) line::yd#0 reg byte x 1.0
(byte) line::yd#0 yd zp ZP_BYTE:4 0.8888888888888888
(byte) line::yd#1 yd zp ZP_BYTE:4 0.8888888888888888
(byte) line::yd#10 yd zp ZP_BYTE:4 0.8888888888888888
(byte) line::yd#3 yd zp ZP_BYTE:4 0.8888888888888888
(void()) line_xdyd((byte) line_xdyd::x , (byte) line_xdyd::y , (byte) line_xdyd::x1 , (byte) line_xdyd::xd , (byte) line_xdyd::yd)
(byte~) line_xdyd::$8 reg byte a 22.0
(label) line_xdyd::@1
(label) line_xdyd::@2
(label) line_xdyd::@3
(label) line_xdyd::@5
(label) line_xdyd::@return
(byte) line_xdyd::e
(byte) line_xdyd::e#0 e zp ZP_BYTE:26 4.0
(byte) line_xdyd::e#1 e zp ZP_BYTE:26 14.666666666666666
(byte) line_xdyd::e#2 e zp ZP_BYTE:26 22.0
(byte) line_xdyd::e#3 e zp ZP_BYTE:26 4.800000000000001
(byte) line_xdyd::e#6 e zp ZP_BYTE:26 11.0
(byte) line_xdyd::x
(byte) line_xdyd::x#0 x zp ZP_BYTE:24 0.8
(byte) line_xdyd::x#1 x zp ZP_BYTE:24 0.8
(byte) line_xdyd::x#2 x zp ZP_BYTE:24 4.125
(byte) line_xdyd::x#3 x zp ZP_BYTE:24 8.75
(byte) line_xdyd::x#6 x zp ZP_BYTE:24 3.0
(byte) line_xdyd::x1
(byte) line_xdyd::x1#0 x1 zp ZP_BYTE:23 1.3333333333333333
(byte) line_xdyd::x1#1 x1 zp ZP_BYTE:23 1.3333333333333333
(byte) line_xdyd::x1#6 x1 zp ZP_BYTE:23 1.0714285714285714
(byte) line_xdyd::xd
(byte) line_xdyd::xd#0 xd zp ZP_BYTE:22 2.0
(byte) line_xdyd::xd#1 xd zp ZP_BYTE:22 2.0
(byte) line_xdyd::xd#5 xd zp ZP_BYTE:22 1.8571428571428572
(byte) line_xdyd::y
(byte) line_xdyd::y#0 y zp ZP_BYTE:25 1.0
(byte) line_xdyd::y#1 y zp ZP_BYTE:25 1.0
(byte) line_xdyd::y#2 y zp ZP_BYTE:25 11.0
(byte) line_xdyd::y#3 y zp ZP_BYTE:25 6.571428571428571
(byte) line_xdyd::y#5 y zp ZP_BYTE:25 3.0
(byte) line_xdyd::y#6 y zp ZP_BYTE:25 11.0
(byte) line_xdyd::yd
(byte) line_xdyd::yd#0 yd zp ZP_BYTE:21 4.0
(byte) line_xdyd::yd#1 yd zp ZP_BYTE:21 4.0
(byte) line_xdyd::yd#2 yd zp ZP_BYTE:21 1.2142857142857142
(void()) line_xdyi((byte) line_xdyi::x , (byte) line_xdyi::y , (byte) line_xdyi::x1 , (byte) line_xdyi::xd , (byte) line_xdyi::yd)
(byte~) line_xdyi::$8 reg byte a 22.0
(label) line_xdyi::@1
@ -106,26 +149,112 @@
(label) line_xdyi::@5
(label) line_xdyi::@return
(byte) line_xdyi::e
(byte) line_xdyi::e#0 e zp ZP_BYTE:5 4.0
(byte) line_xdyi::e#1 e zp ZP_BYTE:5 14.666666666666666
(byte) line_xdyi::e#2 e zp ZP_BYTE:5 22.0
(byte) line_xdyi::e#3 e zp ZP_BYTE:5 4.800000000000001
(byte) line_xdyi::e#6 e zp ZP_BYTE:5 11.0
(byte) line_xdyi::e#0 e zp ZP_BYTE:14 4.0
(byte) line_xdyi::e#1 e zp ZP_BYTE:14 14.666666666666666
(byte) line_xdyi::e#2 e zp ZP_BYTE:14 22.0
(byte) line_xdyi::e#3 e zp ZP_BYTE:14 4.800000000000001
(byte) line_xdyi::e#6 e zp ZP_BYTE:14 11.0
(byte) line_xdyi::x
(byte) line_xdyi::x#0 x zp ZP_BYTE:3 0.6666666666666666
(byte) line_xdyi::x#1 x zp ZP_BYTE:3 4.125
(byte) line_xdyi::x#2 x zp ZP_BYTE:3 8.75
(byte) line_xdyi::x#0 x zp ZP_BYTE:12 0.8
(byte) line_xdyi::x#1 x zp ZP_BYTE:12 0.8
(byte) line_xdyi::x#2 x zp ZP_BYTE:12 4.125
(byte) line_xdyi::x#3 x zp ZP_BYTE:12 8.75
(byte) line_xdyi::x#6 x zp ZP_BYTE:12 3.0
(byte) line_xdyi::x1
(byte) line_xdyi::x1#0 x1 zp ZP_BYTE:11 0.8125
(byte) line_xdyi::x1#0 x1 zp ZP_BYTE:11 1.3333333333333333
(byte) line_xdyi::x1#1 x1 zp ZP_BYTE:11 1.3333333333333333
(byte) line_xdyi::x1#6 x1 zp ZP_BYTE:11 1.0714285714285714
(byte) line_xdyi::xd
(byte) line_xdyi::xd#0 xd zp ZP_BYTE:10 1.5999999999999999
(byte) line_xdyi::xd#0 xd zp ZP_BYTE:10 2.0
(byte) line_xdyi::xd#1 xd zp ZP_BYTE:10 2.0
(byte) line_xdyi::xd#5 xd zp ZP_BYTE:10 1.8571428571428572
(byte) line_xdyi::y
(byte) line_xdyi::y#0 y zp ZP_BYTE:4 0.8
(byte) line_xdyi::y#1 y zp ZP_BYTE:4 11.0
(byte) line_xdyi::y#2 y zp ZP_BYTE:4 6.571428571428571
(byte) line_xdyi::y#5 y zp ZP_BYTE:4 11.0
(byte) line_xdyi::y#0 y zp ZP_BYTE:13 1.0
(byte) line_xdyi::y#1 y zp ZP_BYTE:13 1.0
(byte) line_xdyi::y#2 y zp ZP_BYTE:13 11.0
(byte) line_xdyi::y#3 y zp ZP_BYTE:13 6.571428571428571
(byte) line_xdyi::y#5 y zp ZP_BYTE:13 3.0
(byte) line_xdyi::y#6 y zp ZP_BYTE:13 11.0
(byte) line_xdyi::yd
(byte) line_xdyi::yd#0 yd zp ZP_BYTE:12 1.0714285714285714
(byte) line_xdyi::yd#0 yd zp ZP_BYTE:9 4.0
(byte) line_xdyi::yd#1 yd zp ZP_BYTE:9 4.0
(byte) line_xdyi::yd#2 yd zp ZP_BYTE:9 1.2142857142857142
(void()) line_ydxd((byte) line_ydxd::y , (byte) line_ydxd::x , (byte) line_ydxd::y1 , (byte) line_ydxd::yd , (byte) line_ydxd::xd)
(byte~) line_ydxd::$8 reg byte a 22.0
(label) line_ydxd::@1
(label) line_ydxd::@2
(label) line_ydxd::@3
(label) line_ydxd::@5
(label) line_ydxd::@return
(byte) line_ydxd::e
(byte) line_ydxd::e#0 e zp ZP_BYTE:20 4.0
(byte) line_ydxd::e#1 e zp ZP_BYTE:20 14.666666666666666
(byte) line_ydxd::e#2 e zp ZP_BYTE:20 22.0
(byte) line_ydxd::e#3 e zp ZP_BYTE:20 4.800000000000001
(byte) line_ydxd::e#6 e zp ZP_BYTE:20 11.0
(byte) line_ydxd::x
(byte) line_ydxd::x#0 x zp ZP_BYTE:18 1.0
(byte) line_ydxd::x#1 x zp ZP_BYTE:18 1.0
(byte) line_ydxd::x#2 x zp ZP_BYTE:18 11.0
(byte) line_ydxd::x#3 x zp ZP_BYTE:18 6.571428571428571
(byte) line_ydxd::x#5 x zp ZP_BYTE:18 3.0
(byte) line_ydxd::x#6 x zp ZP_BYTE:18 11.0
(byte) line_ydxd::xd
(byte) line_ydxd::xd#0 xd zp ZP_BYTE:15 4.0
(byte) line_ydxd::xd#1 xd zp ZP_BYTE:15 4.0
(byte) line_ydxd::xd#2 xd zp ZP_BYTE:15 1.2142857142857142
(byte) line_ydxd::y
(byte) line_ydxd::y#0 y zp ZP_BYTE:19 0.8
(byte) line_ydxd::y#1 y zp ZP_BYTE:19 0.8
(byte) line_ydxd::y#2 y zp ZP_BYTE:19 4.125
(byte) line_ydxd::y#3 y zp ZP_BYTE:19 8.75
(byte) line_ydxd::y#6 y zp ZP_BYTE:19 3.0
(byte) line_ydxd::y1
(byte) line_ydxd::y1#0 y1 zp ZP_BYTE:17 1.3333333333333333
(byte) line_ydxd::y1#1 y1 zp ZP_BYTE:17 1.3333333333333333
(byte) line_ydxd::y1#6 y1 zp ZP_BYTE:17 1.0714285714285714
(byte) line_ydxd::yd
(byte) line_ydxd::yd#0 yd zp ZP_BYTE:16 2.0
(byte) line_ydxd::yd#1 yd zp ZP_BYTE:16 2.0
(byte) line_ydxd::yd#5 yd zp ZP_BYTE:16 1.8571428571428572
(void()) line_ydxi((byte) line_ydxi::y , (byte) line_ydxi::x , (byte) line_ydxi::y1 , (byte) line_ydxi::yd , (byte) line_ydxi::xd)
(byte~) line_ydxi::$8 reg byte a 22.0
(label) line_ydxi::@1
(label) line_ydxi::@2
(label) line_ydxi::@3
(label) line_ydxi::@5
(label) line_ydxi::@return
(byte) line_ydxi::e
(byte) line_ydxi::e#0 e zp ZP_BYTE:8 4.0
(byte) line_ydxi::e#1 e zp ZP_BYTE:8 14.666666666666666
(byte) line_ydxi::e#2 e zp ZP_BYTE:8 22.0
(byte) line_ydxi::e#3 e zp ZP_BYTE:8 4.800000000000001
(byte) line_ydxi::e#6 e zp ZP_BYTE:8 11.0
(byte) line_ydxi::x
(byte) line_ydxi::x#0 x zp ZP_BYTE:6 1.0
(byte) line_ydxi::x#1 x zp ZP_BYTE:6 1.0
(byte) line_ydxi::x#2 x zp ZP_BYTE:6 11.0
(byte) line_ydxi::x#3 x zp ZP_BYTE:6 6.571428571428571
(byte) line_ydxi::x#5 x zp ZP_BYTE:6 3.0
(byte) line_ydxi::x#6 x zp ZP_BYTE:6 11.0
(byte) line_ydxi::xd
(byte) line_ydxi::xd#0 xd zp ZP_BYTE:3 4.0
(byte) line_ydxi::xd#1 xd zp ZP_BYTE:3 4.0
(byte) line_ydxi::xd#2 xd zp ZP_BYTE:3 1.2142857142857142
(byte) line_ydxi::y
(byte) line_ydxi::y#0 y zp ZP_BYTE:7 0.8
(byte) line_ydxi::y#1 y zp ZP_BYTE:7 0.8
(byte) line_ydxi::y#2 y zp ZP_BYTE:7 4.125
(byte) line_ydxi::y#3 y zp ZP_BYTE:7 8.75
(byte) line_ydxi::y#6 y zp ZP_BYTE:7 3.0
(byte) line_ydxi::y1
(byte) line_ydxi::y1#0 y1 zp ZP_BYTE:5 1.3333333333333333
(byte) line_ydxi::y1#1 y1 zp ZP_BYTE:5 1.3333333333333333
(byte) line_ydxi::y1#6 y1 zp ZP_BYTE:5 1.0714285714285714
(byte) line_ydxi::yd
(byte) line_ydxi::yd#0 yd zp ZP_BYTE:4 2.0
(byte) line_ydxi::yd#1 yd zp ZP_BYTE:4 2.0
(byte) line_ydxi::yd#5 yd zp ZP_BYTE:4 1.8571428571428572
(void()) lines()
(byte~) lines::$0 reg byte y 50.5
(byte~) lines::$2 $2 zp ZP_BYTE:3 50.5
@ -153,40 +282,30 @@
(byte~) plot::$1 reg byte a 4.0
(byte~) plot::$2 reg byte a 4.0
(byte~) plot::$3 reg byte a 4.0
(byte~) plot::$5 $5 zp ZP_BYTE:15 2.0
(byte~) plot::$5 $5 zp ZP_BYTE:31 2.0
(byte~) plot::$6 reg byte a 4.0
(byte~) plot::$7 reg byte a 4.0
(label) plot::@return
(byte*) plot::plotter
(byte*) plot::plotter#0 plotter zp ZP_PTR_BYTE:6 1.5
(byte*) plot::plotter#0 plotter zp ZP_PTR_BYTE:27 1.5
(byte*) plot::plotter_x
(byte*) plot::plotter_x#1 plotter_x zp ZP_PTR_BYTE:6 2.0
(byte*) plot::plotter_x#2 plotter_x zp ZP_PTR_BYTE:6 0.8
(byte*) plot::plotter_x#1 plotter_x zp ZP_PTR_BYTE:27 2.0
(byte*) plot::plotter_x#2 plotter_x zp ZP_PTR_BYTE:27 0.8
(byte*) plot::plotter_y
(byte*) plot::plotter_y#1 plotter_y zp ZP_PTR_BYTE:13 2.0
(byte*) plot::plotter_y#2 plotter_y zp ZP_PTR_BYTE:13 4.0
(byte*) plot::plotter_y#1 plotter_y zp ZP_PTR_BYTE:29 2.0
(byte*) plot::plotter_y#2 plotter_y zp ZP_PTR_BYTE:29 4.0
(byte) plot::x
(byte) plot::x#0 reg byte x 2.0
(byte) plot::x#1 reg byte x 2.0
(byte) plot::x#2 reg byte x 2.0
(byte) plot::x#3 reg byte x 2.0
(byte) plot::x#4 reg byte x 2.0
(byte) plot::x#5 reg byte x 2.0
(byte) plot::x#6 reg byte x 2.0
(byte) plot::x#7 reg byte x 2.0
(byte) plot::x#8 reg byte x 11.0
(byte) plot::x#9 reg byte x 3.0
(byte) plot::x#0 reg byte x 11.0
(byte) plot::x#1 reg byte x 11.0
(byte) plot::x#2 reg byte x 11.0
(byte) plot::x#3 reg byte x 11.0
(byte) plot::x#4 reg byte x 4.545454545454545
(byte) plot::y
(byte) plot::y#0 reg byte y 4.0
(byte) plot::y#1 reg byte y 4.0
(byte) plot::y#2 reg byte y 4.0
(byte) plot::y#3 reg byte y 4.0
(byte) plot::y#4 reg byte y 4.0
(byte) plot::y#5 reg byte y 4.0
(byte) plot::y#6 reg byte y 4.0
(byte) plot::y#7 reg byte y 4.0
(byte) plot::y#8 reg byte y 22.0
(byte) plot::y#9 reg byte y 4.428571428571428
(byte) plot::y#0 reg byte y 22.0
(byte) plot::y#1 reg byte y 22.0
(byte) plot::y#2 reg byte y 22.0
(byte) plot::y#3 reg byte y 22.0
(byte) plot::y#4 reg byte y 6.857142857142857
(byte[]) plot_bit
(const byte[]) plot_bit#0 plot_bit = (word) 5120
(byte[]) plot_xhi
@ -199,34 +318,52 @@
(const byte[]) plot_ylo#0 plot_ylo = (word) 4608
zp ZP_BYTE:2 [ lines::l#2 lines::l#1 init_plot_tables::$6 ]
reg byte x [ plot::x#9 plot::x#6 plot::x#1 plot::x#3 plot::x#0 plot::x#5 plot::x#7 plot::x#2 plot::x#4 plot::x#8 ]
reg byte y [ plot::y#9 plot::y#6 plot::y#1 plot::y#3 plot::y#0 plot::y#5 plot::y#7 plot::y#2 plot::y#4 plot::y#8 ]
zp ZP_BYTE:3 [ line_xdyi::x#2 line_xdyi::x#0 line_xdyi::x#1 lines::$2 ]
zp ZP_BYTE:4 [ line_xdyi::y#2 line_xdyi::y#0 line_xdyi::y#5 line_xdyi::y#1 lines::$3 ]
zp ZP_BYTE:5 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 line::x0#0 ]
zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 lines::$2 line::y0#0 ]
zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 lines::$3 line::yd#1 line::yd#0 line::yd#3 line::yd#10 ]
zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 line::x0#0 ]
zp ZP_BYTE:6 [ line_ydxi::x#3 line_ydxi::x#5 line_ydxi::x#1 line_ydxi::x#0 line_ydxi::x#6 line_ydxi::x#2 ]
zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ]
zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 line::xd#1 line::xd#0 ]
reg byte x [ plot::x#4 plot::x#1 plot::x#0 plot::x#3 plot::x#2 ]
reg byte y [ plot::y#4 plot::y#1 plot::y#0 plot::y#3 plot::y#2 ]
zp ZP_BYTE:9 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ]
zp ZP_BYTE:10 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ]
zp ZP_BYTE:11 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ]
zp ZP_BYTE:12 [ line_xdyi::x#3 line_xdyi::x#6 line_xdyi::x#0 line_xdyi::x#1 line_xdyi::x#2 ]
zp ZP_BYTE:13 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ]
zp ZP_BYTE:14 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ]
zp ZP_BYTE:15 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ]
zp ZP_BYTE:16 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ]
zp ZP_BYTE:17 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ]
zp ZP_BYTE:18 [ line_ydxd::x#3 line_ydxd::x#5 line_ydxd::x#1 line_ydxd::x#0 line_ydxd::x#6 line_ydxd::x#2 ]
zp ZP_BYTE:19 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ]
zp ZP_BYTE:20 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ]
zp ZP_BYTE:21 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ]
zp ZP_BYTE:22 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ]
zp ZP_BYTE:23 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ]
zp ZP_BYTE:24 [ line_xdyd::x#3 line_xdyd::x#6 line_xdyd::x#0 line_xdyd::x#1 line_xdyd::x#2 ]
zp ZP_BYTE:25 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ]
zp ZP_BYTE:26 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ]
reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ]
reg byte y [ init_plot_tables::bit#3 init_plot_tables::bit#4 init_plot_tables::bit#1 ]
reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ]
zp ZP_PTR_BYTE:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ]
zp ZP_PTR_BYTE:27 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ]
reg byte y [ lines::$0 ]
reg byte x [ lines::$5 ]
zp ZP_BYTE:8 [ line::x1#0 ]
reg byte y [ line::y0#0 ]
zp ZP_BYTE:9 [ line::y1#0 ]
zp ZP_BYTE:10 [ line::xd#1 line_xdyi::xd#0 ]
reg byte x [ line::yd#0 ]
zp ZP_BYTE:11 [ line_xdyi::x1#0 ]
zp ZP_BYTE:12 [ line_xdyi::yd#0 ]
reg byte a [ line::xd#0 ]
reg byte y [ line::x1#0 ]
reg byte x [ line::y1#0 ]
reg byte a [ line_ydxi::$8 ]
reg byte a [ plot::$0 ]
reg byte a [ plot::$1 ]
reg byte a [ plot::$2 ]
zp ZP_PTR_BYTE:13 [ plot::plotter_y#1 plot::plotter_y#2 ]
zp ZP_PTR_BYTE:29 [ plot::plotter_y#1 plot::plotter_y#2 ]
reg byte a [ plot::$3 ]
zp ZP_BYTE:15 [ plot::$5 ]
zp ZP_BYTE:31 [ plot::$5 ]
reg byte a [ plot::$6 ]
reg byte a [ plot::$7 ]
reg byte a [ line_xdyi::$8 ]
reg byte a [ line_ydxd::$8 ]
reg byte a [ line_xdyd::$8 ]
reg byte a [ init_plot_tables::$0 ]
reg byte a [ init_plot_tables::$7 ]
reg byte a [ init_plot_tables::$8 ]