1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-08-02 09:29:35 +00:00

Merge remote-tracking branch 'gitlab/master'

This commit is contained in:
Jesper Gravgaard 2017-12-23 10:31:24 +01:00
commit 8b96c1ae40
67 changed files with 27300 additions and 20377 deletions

View File

@ -92,16 +92,22 @@ public class AsmFragmentManager {
Map<String, String> mapConst = new LinkedHashMap<>();
mapConst.put("c2", "c1");
mapConst.put("c3", "c2");
Map<String, String> mapSbyToBy = new LinkedHashMap<>();
mapSbyToBy.put("vbsz1", "vbuz1");
mapSbyToBy.put("vbsz2", "vbuz2");
mapSbyToBy.put("vbsz3", "vbuz3");
mapSbyToBy.put("vbsc1", "vbuc1");
mapSbyToBy.put("vbsc2", "vbuc2");
mapSbyToBy.put("vbsc3", "vbuc3");
mapSbyToBy.put("vbsaa", "vbuaa");
mapSbyToBy.put("vbsxx", "vbuxx");
mapSbyToBy.put("vbsyy", "vbuyy");
Map<String, String> mapSToU = new LinkedHashMap<>();
mapSToU.put("vbsz1", "vbuz1");
mapSToU.put("vbsz2", "vbuz2");
mapSToU.put("vbsz3", "vbuz3");
mapSToU.put("vbsc1", "vbuc1");
mapSToU.put("vbsc2", "vbuc2");
mapSToU.put("vbsc3", "vbuc3");
mapSToU.put("vbsaa", "vbuaa");
mapSToU.put("vbsxx", "vbuxx");
mapSToU.put("vbsyy", "vbuyy");
mapSToU.put("vwsz1", "vwuz1");
mapSToU.put("vwsz2", "vwuz2");
mapSToU.put("vwsz3", "vwuz3");
mapSToU.put("vwsc1", "vwuc1");
mapSToU.put("vwsc2", "vwuc2");
mapSToU.put("vwsc3", "vwuc3");
List<FragmentSynthesis> synths = new ArrayList<>();
@ -121,33 +127,36 @@ public class AsmFragmentManager {
synths.add(new FragmentSynthesis("(.*)=vbuxx(.*)", ".*=.*vb.aa.*", "txa\n", "$1=vbuaa$2", null, null));
synths.add(new FragmentSynthesis("(.*)=vbuyy(.*)", ".*=.*vb.aa.*", "tya\n", "$1=vbuaa$2", null, null));
synths.add(new FragmentSynthesis("(.*)=vbuz1(.*)", ".*=.*vb.aa.*|vbuz1=.*", "lda {z1}\n", "$1=vbuaa$2", null, mapZ));
synths.add(new FragmentSynthesis("(.*)=vbsz1(.*)", ".*=.*vb.aa.*|vbsz1=.*", "lda {z1}\n", "$1=vbuaa$2", null, mapZ));
synths.add(new FragmentSynthesis("(.*)=vbuz2", ".*=.*vb.aa.*|...z2=.*", "lda {z2}\n", "$1=vbuaa", null, null));
synths.add(new FragmentSynthesis("(.*)=vbsz2", ".*=.*vb.aa.*|...z2=.*", "lda {z2}\n", "$1=vbuaa", null, null));
synths.add(new FragmentSynthesis("(.*)=_deref_vwuc1(.*)", ".*=.*vb.aa.*", "lda {c1}\n", "$1=vbuaa$2", null, mapConst));
synths.add(new FragmentSynthesis("(.*)=_deref_pb(.)z1(.*)", ".*z1.*=.*|.*=.*vb.aa.*|.*=.*vb.yy.*", "ldy #0\n" + "lda ({z1}),y\n", "$1=vb$2aa$3", null, mapZ));
synths.add(new FragmentSynthesis("(.*)=vbuz1(.*)", ".*=.*vb.aa.*|.*z1.*z1.*", "lda {z1}\n", "$1=vbuaa$2", null, mapZ));
synths.add(new FragmentSynthesis("(.*)=vbsz1(.*)", ".*=.*vb.aa.*|.*z1.*z1.*", "lda {z1}\n", "$1=vbsaa$2", null, mapZ));
synths.add(new FragmentSynthesis("(.*)=vbuz2", ".*=.*aa.*|.*z2.*=.*", "lda {z2}\n", "$1=vbuaa", null, null));
synths.add(new FragmentSynthesis("(.*)=vbsz2", ".*=.*aa.*|.*z2.*=.*", "lda {z2}\n", "$1=vbuaa", null, null));
synths.add(new FragmentSynthesis("(.*)=vbuc1", ".*=.*aa.*", "lda #{c1}\n", "$1=vbuaa", null, mapConst));
synths.add(new FragmentSynthesis("(.*)=vbsc1", ".*=.*aa.*", "lda #{c1}\n", "$1=vbsaa", null, mapConst));
synths.add(new FragmentSynthesis("(.*)=_deref_vwuc1(.*)", ".*=.*aa.*", "lda {c1}\n", "$1=vbuaa$2", null, mapConst));
synths.add(new FragmentSynthesis("(.*)=_deref_pb(.)z1(.*)", ".*z1.*z1.*|.*=.*aa.*|.*=.*yy.*", "ldy #0\n" + "lda ({z1}),y\n", "$1=vb$2aa$3", null, mapZ));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbuxx", ".*=vb.[ax][ax].*vb.xx|.*derefidx_vb.xx", "txa\n", "$1=$2_vbuaa", null, null));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbsxx", ".*=vb.[ax][ax].*vb.xx|.*derefidx_vb.xx", "txa\n", "$1=$2_vbsaa", null, null));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbuyy", ".*=[ay]s?by.*vb.yy|.*derefidx_vb.yy", "tya\n", "$1=$2_vbuaa", null, null));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbsyy", ".*=[ay]s?by.*vb.yy|.*derefidx_vb.yy", "tya\n", "$1=$2_vbsaa", null, null));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbuz1", ".*=.*vb.aa.*|.*vb.z1.*_vb.z1", "lda {z1}\n", "$1=$2_vbuaa", null, mapZ));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbsz1", ".*=.*vb.aa.*|.*vb.z1.*_vb.z1", "lda {z1}\n", "$1=$2_vbsaa", null, mapZ));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbuz2", ".*=.*vb.aa.*|.*vb.z2.*_vb.z2", "lda {z2}\n", "$1=$2_vbuaa", null, null));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbuxx", ".*=.*[ax][ax].*xx|.*derefidx_vb.xx", "txa\n", "$1=$2_vbuaa", null, null));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbsxx", ".*=.*[ax][ax].*xx|.*derefidx_vb.xx", "txa\n", "$1=$2_vbsaa", null, null));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbuyy", ".*=.*[ay][ay].*yy|.*derefidx_vb.yy", "tya\n", "$1=$2_vbuaa", null, null));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbsyy", ".*=-*[ay][ay].*yy|.*derefidx_vb.yy", "tya\n", "$1=$2_vbsaa", null, null));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbuz1", ".*=.*aa.*|.*z1.*z1.*", "lda {z1}\n", "$1=$2_vbuaa", null, mapZ));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbsz1", ".*=.*aa.*|.*z1.*z1.*", "lda {z1}\n", "$1=$2_vbsaa", null, mapZ));
synths.add(new FragmentSynthesis("(.*)=(.*)_vbuz2", ".*=.*aa.*|.*z2.*z2.*", "lda {z2}\n", "$1=$2_vbuaa", null, null));
synths.add(new FragmentSynthesis("vbuz1=vbuz1(.*)", ".*=.*vb.aa.*", "lda {z1}\n", "vbuaa=vbuaa$1", "sta {z1}\n", mapZ));
synths.add(new FragmentSynthesis("vbsz1=vbsz1(.*)", ".*=.*vb.aa.*", "lda {z1}\n", "vbsaa=vbsaa$1", "sta {z1}\n", mapZ));
synths.add(new FragmentSynthesis("vbuz1=vbuz1(.*)", ".*=.*vb.aa.*|.*z1.*z1.*z1.*", "lda {z1}\n", "vbuaa=vbuaa$1", "sta {z1}\n", mapZ));
synths.add(new FragmentSynthesis("vbsz1=vbsz1(.*)", ".*=.*vb.aa.*|.*z1.*z1.*z1.*", "lda {z1}\n", "vbsaa=vbsaa$1", "sta {z1}\n", mapZ));
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuaa", ".*=.*vb.yy.*", "tay\n", "$1=$2_derefidx_vbuyy", null, null));
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuaa", ".*=.*vb.xx.*", "tax\n", "$1=$2_derefidx_vbuxx", null, null));
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz1", ".*=.*vb.yy.*", "ldy {z1}\n", "$1=$2_derefidx_vbuyy", null, mapZ));
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz1", ".*=.*vb.xx.*", "ldx {z1}\n", "$1=$2_derefidx_vbuxx", null, mapZ));
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuaa", ".*=.*yy.*", "tay\n", "$1=$2_derefidx_vbuyy", null, null));
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuaa", ".*=.*xx.*", "tax\n", "$1=$2_derefidx_vbuxx", null, null));
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz1", ".*=.*yy.*|.*z1.*z1.*", "ldy {z1}\n", "$1=$2_derefidx_vbuyy", null, mapZ));
synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz1", ".*=.*xx.*|.*z1.*z1.*", "ldx {z1}\n", "$1=$2_derefidx_vbuxx", null, mapZ));
synths.add(new FragmentSynthesis("vbuz1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {z1}\n", "vbuaa_$1_$2", null, mapZ));
synths.add(new FragmentSynthesis("vbsz1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {z1}\n", "vbsaa_$1_$2", null, mapZ));
synths.add(new FragmentSynthesis("_deref_vwuc1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {c1}\n", "vbuaa_$1_$2", null, mapConst));
synths.add(new FragmentSynthesis("_deref_pb(.)z1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*|.*vb.yy.*|.*z1.*z1.*", "ldy #0\n" + "lda ({z1}),y\n", "vb$1aa_$2_$3", null, mapZ));
synths.add(new FragmentSynthesis("(.*)_ge_(vb.aa)_then_(.*)", ".*vb.aa.*_ge.*", null, "$2_lt_$1_then_$3", null, null));
synths.add(new FragmentSynthesis("(.*)_ge_(vb.xx)_then_(.*)", ".*vb.[ax][ax].*_ge.*", null, "$2_lt_$1_then_$3", null, null));
synths.add(new FragmentSynthesis("(.*)_ge_(vb.yy)_then_(.*)", ".*vb.[axy][axy].*_ge.*", null, "$2_lt_$1_then_$3", null, null));
@ -170,10 +179,24 @@ public class AsmFragmentManager {
synths.add(new FragmentSynthesis("p..z1=(.*)_(sethi|setlo|plus|minus)_(.*)", null, null, "vwuz1=$1_$2_$3", null, null));
synths.add(new FragmentSynthesis("(.*)=p..z(.)_(sethi|setlo|plus|minus)_(.*)", null, null, "$1=vwuz$2_$3_$4", null, null));
synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)_(eq|neq)_(vbsz.|csoby.|vbsaa|vbsxx|vbsyy)_then_(.*)", null, null, "$1_$2_$3_then_$4", null, mapSbyToBy));
synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)=(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)", null, null, "$1=$2", null, mapSbyToBy));
synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)=(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)_(plus|band|bxor|bor)_(vbsz.|csoby.|vbsaa|vbsxx|vbsyy)", null, null, "$1=$2_$3_$4", null, mapSbyToBy));
synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)=_(inc|dec)_(vbsz.|csoby.|vbsaa|vbsxx|vbsyy)", null, null, "$1=_$2_$3", null, mapSbyToBy));
synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)_(eq|neq)_(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)_then_(.*)", null, null, "$1_$2_$3_then_$4", null, mapSToU));
synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)=(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)", null, null, "$1=$2", null, mapSToU));
synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)=(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)_(plus|band|bxor|bor)_(vbsz.|csoby.|vbsaa|vbsxx|vbsyy)", null, null, "$1=$2_$3_$4", null, mapSToU));
synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)=_(inc|dec)_(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)", null, null, "$1=_$2_$3", null, mapSToU));
synths.add(new FragmentSynthesis("(vwsz.)=(vwsz.|vwsc.)", null, null, "$1=$2", null, mapSToU));
synths.add(new FragmentSynthesis("(vwsz.)=(vwsz.|vwsc.)_(plus|band|bxor|bor)_(vwsz.|vwsc.)", null, null, "$1=$2_$3_$4", null, mapSToU));
synths.add(new FragmentSynthesis("(vwsz.)=(vwsz.)_(plus|minus|band|bxor|bor)_vb.c(.)", null, null, "$1=$2_$3_vwsc$4", null, null));
synths.add(new FragmentSynthesis("(vwsz.)=vb.c(.)_(plus|minus|band|bxor|bor)_(vwsz.)", null, null, "$1=vwsc$2_$3_$4", null, null));
synths.add(new FragmentSynthesis("(vbuz.|vbuaa|vbuxx|vbuyy)=_(lo|hi)_vws(z.|c.)", null, null, "$1=_$2_vwu$3", null, mapSToU));
// Use Z1/Z2 ASM to synthesize Z1-only code
synths.add(new FragmentSynthesis("(v..)z1=(v..)z1_(plus|minus|band|bxor|bor)_(.*)", null, null, "$1z1=$2z2_$3_$4", null, mapZ, false));
synths.add(new FragmentSynthesis("(v..)z1=(.*)_(plus|minus|band|bxor|bor)_(v..)z1", null, null, "$1z1=$2_$3_$4z2", null, mapZ, false));
synths.add(new FragmentSynthesis("(v..)z1=_(neg|lo|hi)_(v..)z1", null, null, "$1z1=_$2_$3z2", null, mapZ, false));
for (FragmentSynthesis synth : synths) {
CharStream synthesized = synth.synthesize(signature, log);
@ -221,21 +244,28 @@ public class AsmFragmentManager {
private String asmPostfix;
private Map<String, String> bindMappings;
private String subSignature;
private boolean mapSignature;
public FragmentSynthesis(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map<String, String> bindMappings) {
public FragmentSynthesis(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map<String, String> bindMappings, boolean mapSignature) {
this.sigMatch = sigMatch;
this.sigAvoid = sigAvoid;
this.asmPrefix = asmPrefix;
this.sigReplace = sigReplace;
this.asmPostfix = asmPostfix;
this.bindMappings = bindMappings;
this.mapSignature = mapSignature;
}
public FragmentSynthesis(String sigMatch, String sigAvoid, String asmPrefix, String sigReplace, String asmPostfix, Map<String, String> bindMappings) {
this(sigMatch, sigAvoid, asmPrefix, sigReplace, asmPostfix, bindMappings, true);
}
public CharStream synthesize(String signature, CompileLog log) {
if (signature.matches(sigMatch)) {
if (sigAvoid == null || !signature.matches(sigAvoid)) {
subSignature = regexpRewriteSignature(signature, sigMatch, sigReplace);
if (bindMappings != null) {
if (mapSignature && bindMappings != null) {
// When mapping the signature we do the map replacement in the signature
for (String bound : bindMappings.keySet()) {
subSignature = subSignature.replace(bound, bindMappings.get(bound));
}
@ -248,10 +278,18 @@ public class AsmFragmentManager {
}
String subFragment = subCharStream.toString();
if (bindMappings != null) {
List<String> reverse = new ArrayList<>(bindMappings.keySet());
Collections.reverse(reverse);
for (String bound : reverse) {
subFragment = subFragment.replace("{"+bindMappings.get(bound)+"}", "{"+bound+"}");
if(mapSignature) {
// When mapping the signature we do the reverse replacement in the ASM
List<String> reverse = new ArrayList<>(bindMappings.keySet());
Collections.reverse(reverse);
for (String bound : reverse) {
subFragment = subFragment.replace("{" + bindMappings.get(bound) + "}", "{" + bound + "}");
}
} else {
// When not mapping the signature we do the replacement directly in the ASM
for (String bound : bindMappings.keySet()) {
subFragment = subFragment.replace("{" + bound + "}", "{" + bindMappings.get(bound) + "}");
}
}
}
newFragment.append(subFragment);

View File

@ -274,6 +274,8 @@ public class AsmFragmentSignature {
return "vbs";
} else if (SymbolType.isWord(type)) {
return "vwu";
} else if (SymbolType.isSWord(type)) {
return "vws";
} else if (type instanceof SymbolTypePointer ) {
SymbolType elementType = ((SymbolTypePointer) type).getElementType();
if (SymbolType.isByte(elementType)) {

View File

@ -0,0 +1 @@
lda {z1}

View File

@ -0,0 +1,9 @@
sec
lda {z2}
eor #$ff
adc #$0
sta {z1}
lda {z2}+1
eor #$ff
adc #$0
sta {z1}+1

View File

@ -0,0 +1,7 @@
lda #<{c1}
sec
sbc {z2}
sta {z1}
lda #>{c1}
sbc {z2}+1
sta {z1}+1

View File

@ -0,0 +1,7 @@
lda {z2}
sec
sbc #<{c1}
sta {z1}
lda {z2}+1
sbc #>{c1}
sta {z1}+1

View File

@ -0,0 +1,7 @@
lda {z2}
clc
adc #<{c1}
sta {z1}
lda {z2}+1
adc #>{c1}
sta {z1}+1

View File

@ -0,0 +1,21 @@
// ROL thrice instead of RORing 5 times
lda {z2} // {z2} low byte to tmp $ff
sta $ff
lda {z2}+1 // {z2} high byte to {z1} low byte
sta {z1}
lda #0
bit {z2}+1
bpl !+ // {z2} high byte positive?
lda #$ff
!:
sta {z1}+1 // sign extended {z2} into {z1} high byte
// ROL thrice
rol $ff
rol {z1}
rol {z1}+1
rol $ff
rol {z1}
rol {z1}+1
rol $ff
rol {z1}
rol {z1}+1

View File

@ -0,0 +1,18 @@
// ROL twice instead of RORing 6 times
lda {z2} // {z2} low byte to tmp $ff
sta $ff
lda {z2}+1 // {z2} high byte to {z1} low byte
sta {z1}
lda #0
bit {z2}+1
bpl !+ // {z2} high byte positive?
lda #$ff
!:
sta {z1}+1 // sign extended {z2} into {z1} high byte
// ROL twice
rol $ff
rol {z1}
rol {z1}+1
rol $ff
rol {z1}
rol {z1}+1

View File

@ -0,0 +1,15 @@
// ROL once instead of RORing 7 times
lda {z2} // {z2} low byte to tmp $ff
sta $ff
lda {z2}+1 // {z2} high byte to {z1} low byte
sta {z1}
lda #0
bit {z2}+1
bpl !+ // {z2} high byte positive?
lda #$ff
!:
sta {z1}+1 // sign extended {z2} into {z1} high byte
// ROL once
rol $ff
rol {z1}
rol {z1}+1

View File

@ -0,0 +1,2 @@
lda {z1}+1
bpl {la1}

View File

@ -0,0 +1,8 @@
lda {z1}
cmp #<{c1}
lda {z1}+1
sbc #>{c1}
bvc !+
eor #$80
!:
bpl {la1}

View File

@ -0,0 +1,4 @@
lda {z2}
sta {z1}
lda {z2}+1
sta {z1}+1

View File

@ -0,0 +1,7 @@
lda {z2}
clc
adc #<{c1}
sta {z1}
lda {z2}+1
adc #>{c1}
sta {z1}+1

View File

@ -62,11 +62,11 @@ public class SymbolTypeInference {
throw new RuntimeException("Type error: Dereferencing a non-pointer " + subType);
}
} else if (Operator.LOWBYTE.equals(operator)) {
if (subType instanceof SymbolTypePointer || SymbolType.WORD.equals(subType)) {
if (subType instanceof SymbolTypePointer || SymbolType.WORD.equals(subType) || SymbolType.WORD.equals(subType)) {
return SymbolType.BYTE;
}
} else if (Operator.HIBYTE.equals(operator)) {
if (subType instanceof SymbolTypePointer || SymbolType.WORD.equals(subType)) {
if (subType instanceof SymbolTypePointer || SymbolType.WORD.equals(subType) || SymbolType.SWORD.equals(subType) ) {
return SymbolType.BYTE;
}
} else if (Operator.CAST_BYTE.equals(operator)) {
@ -117,7 +117,7 @@ public class SymbolTypeInference {
}
if (SymbolType.WORD.equals(type1) || SymbolType.WORD.equals(type2)) {
return SymbolType.WORD;
} else if (isByte(type1) && isByte(type2)) {
} else if (SymbolType.isByte(type1) && SymbolType.isByte(type2)) {
return SymbolType.BYTE;
} else if (SymbolType.SBYTE.equals(type1) && SymbolType.SBYTE.equals(type2)) {
return SymbolType.SBYTE;
@ -129,7 +129,7 @@ public class SymbolTypeInference {
}
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
case "/":
if (type1 instanceof SymbolTypePointer && isByte(type2)) {
if (type1 instanceof SymbolTypePointer && SymbolType.isByte(type2)) {
return type1;
}
case "&":
@ -137,17 +137,21 @@ public class SymbolTypeInference {
case "^":
if (SymbolType.WORD.equals(type1) || SymbolType.WORD.equals(type2)) {
return SymbolType.WORD;
} else if (isByte(type1) && isByte(type2)) {
} else if (SymbolType.isByte(type1) && SymbolType.isByte(type2)) {
return SymbolType.BYTE;
}
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
case "<<":
case ">>":
if (SymbolType.WORD.equals(type1)) {
return SymbolType.WORD;
} else if (isByte(type1)) {
if (SymbolType.isByte(type1)) {
return SymbolType.BYTE;
} else if (SymbolType.isSByte(type1)) {
return SymbolType.SBYTE;
} else if (SymbolType.isWord(type1)) {
return SymbolType.WORD;
} else if (SymbolType.isSWord(type1)) {
return SymbolType.SWORD;
}
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
default:
@ -156,7 +160,7 @@ public class SymbolTypeInference {
}
private static SymbolType inferPlus(SymbolType type1, SymbolType type2) {
if (type1.equals(SymbolType.STRING) && isByte(type2)) {
if (type1.equals(SymbolType.STRING) && SymbolType.isByte(type2)) {
return SymbolType.STRING;
} else if (type1.equals(SymbolType.STRING) && SymbolType.STRING.equals(type2)) {
return SymbolType.STRING;
@ -164,16 +168,16 @@ public class SymbolTypeInference {
if (type1 instanceof SymbolTypePointer && isInteger(type2)) {
return new SymbolTypePointer(((SymbolTypePointer) type1).getElementType());
}
if (isByte(type1) && isByte(type2)) {
if (SymbolType.isByte(type1) && SymbolType.isByte(type2)) {
return SymbolType.BYTE;
}
if (isSByte(type1) && isSByte(type2)) {
if (SymbolType.isSByte(type1) && SymbolType.isSByte(type2)) {
return SymbolType.SBYTE;
}
if (isWord(type1) && isWord(type2) || isByte(type2)) {
if (SymbolType.isWord(type1) && (SymbolType.isWord(type2) || SymbolType.isByte(type2))) {
return SymbolType.WORD;
}
if (isSWord(type1) && isSWord(type2) || isSByte(type2)) {
if (SymbolType.isSWord(type1) && (SymbolType.isSWord(type2) || SymbolType.isSByte(type2))) {
return SymbolType.SWORD;
}
throw new RuntimeException("Type inference case not handled " + type1 + " " + "+" + " " + type2);
@ -186,16 +190,16 @@ public class SymbolTypeInference {
if (type1 instanceof SymbolTypePointer && type2 instanceof SymbolTypePointer) {
return SymbolType.WORD;
}
if (isByte(type1) && isByte(type2)) {
if (SymbolType.isByte(type1) && SymbolType.isByte(type2)) {
return SymbolType.BYTE;
}
if (isSByte(type1) && isSByte(type2)) {
if (SymbolType.isSByte(type1) && SymbolType.isSByte(type2)) {
return SymbolType.SBYTE;
}
if (isWord(type1) && isWord(type2)) {
if (SymbolType.isWord(type1) && SymbolType.isWord(type2)) {
return SymbolType.WORD;
}
if (isSWord(type1) && isSWord(type2)) {
if (SymbolType.isSWord(type1) && SymbolType.isSWord(type2)) {
return SymbolType.SWORD;
}
throw new RuntimeException("Type inference case not handled " + type1 + " " + "+" + " " + type2);
@ -205,60 +209,19 @@ public class SymbolTypeInference {
private static boolean isInteger(SymbolType type) {
if (SymbolType.BYTE.equals(type)) {
return true;
} else if (SymbolType.WORD.equals(type)) {
} else if(SymbolType.WORD.equals(type)) {
return true;
} else if (SymbolType.SBYTE.equals(type)) {
} else if(SymbolType.SBYTE.equals(type)) {
return true;
} else if (SymbolType.SWORD.equals(type)) {
} else if(SymbolType.SWORD.equals(type)) {
return true;
} else if (type instanceof SymbolTypeInline) {
} else if(type instanceof SymbolTypeInline) {
return true;
} else {
return false;
}
}
private static boolean isByte(SymbolType type) {
if (SymbolType.BYTE.equals(type)) {
return true;
} else if (type instanceof SymbolTypeInline) {
return ((SymbolTypeInline) type).isByte();
} else {
return false;
}
}
private static boolean isSByte(SymbolType type) {
if (SymbolType.SBYTE.equals(type)) {
return true;
} else if (type instanceof SymbolTypeInline) {
return ((SymbolTypeInline) type).isSByte();
} else {
return false;
}
}
private static boolean isWord(SymbolType type) {
if (SymbolType.WORD.equals(type)) {
return true;
} else if (type instanceof SymbolTypeInline) {
return ((SymbolTypeInline) type).isWord();
} else {
return false;
}
}
private static boolean isSWord(SymbolType type) {
if (SymbolType.SWORD.equals(type)) {
return true;
} else if (type instanceof SymbolTypeInline) {
return ((SymbolTypeInline) type).isSWord();
} else {
return false;
}
}
public static SymbolType inferType(ProgramScope symbols, RValue rValue) {
SymbolType type = null;
if (rValue instanceof VariableRef) {

View File

@ -21,17 +21,17 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
public boolean optimize() {
final Aliases aliases = findAliases(getProgram());
removeAliasAssignments(aliases);
replaceVariables(aliases.getReplacements());
replaceVariables(aliases.getReplacements(getSymbols()));
for (AliasSet aliasSet : aliases.getAliasSets()) {
StringBuilder str = new StringBuilder();
str.append(aliasSet.getKeepVar().toString(getProgram()));
str.append(aliasSet.getKeepVar(getSymbols()).toString(getProgram()));
str.append(" = ");
for (VariableRef var : aliasSet.getEliminateVars()) {
for (VariableRef var : aliasSet.getEliminateVars(getSymbols())) {
str.append(var.toString(getProgram()) + " ");
}
getLog().append("Alias " + str);
}
deleteSymbols(aliases.getSymbolsToRemove());
deleteSymbols(aliases.getSymbolsToRemove(getSymbols()));
return (aliases.size() > 0);
}
@ -96,19 +96,19 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
}
}
public List<VariableRef> getSymbolsToRemove() {
public List<VariableRef> getSymbolsToRemove(ProgramScope scope) {
ArrayList<VariableRef> eliminates = new ArrayList<>();
for (AliasSet alias : aliases) {
eliminates.addAll(alias.getEliminateVars());
eliminates.addAll(alias.getEliminateVars(scope));
}
return eliminates;
}
public Map<VariableRef, VariableRef> getReplacements() {
public Map<VariableRef, VariableRef> getReplacements(ProgramScope scope) {
HashMap<VariableRef, VariableRef> replacements = new LinkedHashMap<>();
for (AliasSet aliasSet : aliases) {
VariableRef keepVar = aliasSet.getKeepVar();
for (VariableRef var : aliasSet.getEliminateVars()) {
VariableRef keepVar = aliasSet.getKeepVar(scope);
for (VariableRef var : aliasSet.getEliminateVars(scope)) {
if (!var.equals(keepVar)) {
replacements.put(var, keepVar);
}
@ -207,36 +207,59 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
vars.addAll(aliasSet.getVars());
}
public VariableRef getKeepVar() {
VariableRef keep = null;
List<VariableRef> vars = new ArrayList<>(this.vars);
Collections.sort(vars, new Comparator<VariableRef>() {
@Override
public int compare(VariableRef o1, VariableRef o2) {
return o1.getFullName().compareTo(o2.getFullName());
}
});
public VariableRef getKeepVar(ProgramScope scope) {
// Score all base names (without versions for versioned vars, full name for intermediates)
int maxScore = 0;
String maxName = null;
Map<String, Integer> varNameScore = new LinkedHashMap<>();
for (VariableRef var : vars) {
if (keep == null) {
keep = var;
String name;
int score;
Variable variable = scope.getVariable(var);
if(variable.isDeclaredConstant()) {
name = var.getFullNameUnversioned();
score = 100;
} else if(var.isVersion()) {
name = var.getFullNameUnversioned();
score = 4-var.getScopeDepth();
} else {
if (var.isVersion()) {
if (keep.isVersion()) {
if (var.getScopeDepth() < keep.getScopeDepth()) {
keep = var;
}
} else {
keep = var;
}
// must be intermediate
name = var.getFullName();
score = 2-var.getScopeDepth();
}
Integer nameScore = varNameScore.get(name);
if(nameScore==null) {
nameScore = 0;
}
nameScore = nameScore + score;
varNameScore.put(name, nameScore);
if(nameScore>maxScore) {
maxName = name;
maxScore = nameScore;
}
}
// Find first var with highest scoring name
List<VariableRef> vars = new ArrayList<>(this.vars);
Collections.sort(vars, Comparator.comparing(SymbolRef::getFullName));
for (VariableRef var : vars) {
if(var.isVersion()) {
if(maxName.equals(var.getFullNameUnversioned())) {
return var;
}
} else {
if(maxName.equals(var.getFullName())) {
return var;
}
}
}
return keep;
throw new RuntimeException("Keep variable unexpectedly not found!");
}
public List<VariableRef> getEliminateVars() {
public List<VariableRef> getEliminateVars(ProgramScope scope) {
List<VariableRef> eliminate = new ArrayList<>();
VariableRef keepVar = getKeepVar();
VariableRef keepVar = getKeepVar(scope);
for (VariableRef var : vars) {
if (!var.equals(keepVar)) {
eliminate.add(var);
@ -269,6 +292,10 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
boolean lMatch = false;
for (StatementPhiBlock.PhiVariable phiVariable : phi.getPhiVariables()) {
if (lMatch) {
if (aliasSet.contains(phiVariable.getVariable())) {
// Assigning inside tha alias set again - no need to check the variables
continue;
}
for (StatementPhiBlock.PhiRValue phiRValue : phiVariable.getValues()) {
RValue rValue = phiRValue.getrValue();
if (aliasSet.contains(rValue)) {
@ -308,7 +335,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
ControlFlowBlock aliasAssignmentBlock = program.getGraph().getAssignmentBlock(alias);
ScopeRef aliasScope = aliasAssignmentBlock.getScope();
ScopeRef varScope = block.getScope();
if (!varScope.equals(aliasScope) || !variable.getScopeNames().equals(alias.getScopeNames())) {
if (!alias.isIntermediate() && (!varScope.equals(aliasScope) || !variable.getScopeNames().equals(alias.getScopeNames()))) {
program.getLog().append("Not aliassing across scopes: " + variable + " " + alias);
} else {
aliases.add(variable, alias);

View File

@ -41,13 +41,22 @@ public class Pass3PhiLifting {
ControlFlowBlock predecessorBlock = graph.getBlock(predecessorRef);
VariableRef rValVarRef = (VariableRef) phiRValue.getrValue();
Variable newVar;
if(rValVarRef.isVersion()) {
Variable rValVar = program.getScope().getVariable(rValVarRef);
newVar = ((VariableVersion) rValVar).getVersionOf().createVersion();
if(phiVariable.getVariable().isVersion()) {
Variable lValVar = program.getScope().getVariable(phiVariable.getVariable());
newVar = ((VariableVersion) lValVar).getVersionOf().createVersion();
} else {
Symbol predecessorSymbol = programScope.getSymbol(predecessorRef);
newVar = predecessorSymbol.getScope().addVariableIntermediate();
throw new RuntimeException("Only versions! "+phiVariable.getVariable());
// Symbol predecessorSymbol = programScope.getSymbol(predecessorRef);
// newVar = predecessorSymbol.getScope().addVariableIntermediate();
}
// If the PHI LValue does not work when lifting - try the rValue instead! Original code below
//if(rValVarRef.isVersion()) {
// Variable rValVar = program.getScope().getVariable(rValVarRef);
// newVar = ((VariableVersion) rValVar).getVersionOf().createVersion();
//} else {
// Symbol predecessorSymbol = programScope.getSymbol(predecessorRef);
// newVar = predecessorSymbol.getScope().addVariableIntermediate();
//}
Symbol phiLValue = programScope.getSymbol(phiVariable.getVariable());
newVar.setType(phiLValue.getType());
newVar.setInferredType(true);

View File

@ -22,6 +22,10 @@ public class TestPrograms extends TestCase {
helper = new ReferenceHelper("dk/camelot64/kickc/test/ref/");
}
public void testSignedWords() throws IOException, URISyntaxException {
compileAndCompare("signed-words");
}
public void testSinusSprites() throws IOException, URISyntaxException {
compileAndCompare("sinus-sprites");
}

View File

@ -0,0 +1,25 @@
const byte* PROCPORT = $01;
const byte* CHARGEN = $d000;
const byte* SPRITES_XPOS = $d000;
const byte* SPRITES_YPOS = $d001;
const byte* SPRITES_XMSB = $d010;
const byte* RASTER = $d012;
const byte* SPRITES_ENABLE = $d015;
const byte* SPRITES_EXPAND_Y = $d017;
const byte* SPRITES_PRIORITY = $d01b;
const byte* SPRITES_MC = $d01c;
const byte* SPRITES_EXPAND_X = $d01d;
const byte* BORDERCOL = $d020;
const byte* BGCOL = $d021;
const byte* SPRITES_MC1 = $d025;
const byte* SPRITES_MC2 = $d026;
const byte* SPRITES_COLS = $d027;
const byte* COLS = $d800;
const byte BLACK = 0;
const byte WHITE = 1;
const byte RED = 2;

View File

@ -34,24 +34,19 @@ main: {
jmp b1
}
lines: {
.label _2 = 3
.label _3 = 4
.label l = 2
lda #0
sta l
b1:
ldx l
lda lines_x,x
tay
sta line.x0
lda lines_x+1,x
sta _2
sta line.x1
lda lines_y,x
sta _3
tay
lda lines_y+1,x
tax
sty line.x0
ldy _3
stx line.y1
sta line.y1
jsr line
inc l
lda l
@ -60,9 +55,9 @@ lines: {
rts
}
line: {
.label x0 = 5
.label x1 = 3
.label y1 = 4
.label x0 = 3
.label x1 = 4
.label y1 = 5
.label xd = 7
.label yd = $a
lda x0
@ -95,8 +90,6 @@ line: {
b3:
sty line_ydxi.y
ldx x0
lda y1
sta line_ydxi.y1
lda yd
sta line_ydxi.yd
lda xd
@ -148,6 +141,8 @@ line: {
ldx x1
lda y1
sta line_xdyd.y
lda x0
sta line_xdyd.x1
lda xd
sta line_xdyd.xd
lda yd
@ -157,8 +152,6 @@ line: {
b10:
sty line_ydxd.y
ldx x0
lda y1
sta line_ydxd.y1
lda yd
sta line_ydxd.yd
lda xd
@ -175,6 +168,8 @@ line: {
ldx x1
lda y1
sta line_xdyi.y
lda x0
sta line_xdyi.x1
lda xd
sta line_xdyi.xd
lda yd

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -74,16 +74,16 @@
(label) line::@9
(label) line::@return
(byte) line::x0
(byte) line::x0#0 x0 zp ZP_BYTE:5 5.173913043478264
(byte) line::x0#0 x0 zp ZP_BYTE:3 5.173913043478264
(byte) line::x1
(byte) line::x1#0 x1 zp ZP_BYTE:3 5.409090909090908
(byte) line::x1#0 x1 zp ZP_BYTE:4 5.409090909090908
(byte) line::xd
(byte) line::xd#0 xd zp ZP_BYTE:7 0.7
(byte) line::xd#1 xd zp ZP_BYTE:7 0.7
(byte) line::y0
(byte) line::y0#0 reg byte y 5.952380952380948
(byte) line::y1
(byte) line::y1#0 y1 zp ZP_BYTE:4 6.249999999999996
(byte) line::y1#0 y1 zp ZP_BYTE:5 6.249999999999996
(byte) line::yd
(byte) line::yd#0 yd zp ZP_BYTE:10 0.8888888888888888
(byte) line::yd#1 yd zp ZP_BYTE:10 0.8888888888888888
@ -242,16 +242,12 @@
(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
(byte~) lines::$3 $3 zp ZP_BYTE:4 50.5
(byte~) lines::$5 reg byte x 50.5
(label) lines::@1
(label) lines::@3
(label) lines::@return
(byte) lines::l
(byte) lines::l#1 l zp ZP_BYTE:2 151.5
(byte) lines::l#2 l zp ZP_BYTE:2 60.6
(byte) lines::l#2 l zp ZP_BYTE:2 100.99999999999999
(byte) lines_cnt
(const byte) lines_cnt#0 lines_cnt = (byte/signed byte/word/signed word) 8
(byte[]) lines_x
@ -303,9 +299,9 @@
(const byte[]) plot_ylo#0 plot_ylo = ((byte*))(word/signed word) 4608
zp ZP_BYTE:2 [ lines::l#2 lines::l#1 init_plot_tables::$6 ]
zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 lines::$2 line::x1#0 ]
zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 lines::$3 line::y1#0 ]
zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 line::x0#0 ]
zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 line::x0#0 ]
zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 line::x1#0 ]
zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 line::y1#0 ]
reg byte x [ 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:6 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 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:7 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 line::xd#1 line::xd#0 ]
@ -318,8 +314,6 @@ reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ]
reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ]
zp ZP_WORD:8 [ 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 ]
reg byte y [ line::y0#0 ]
zp ZP_BYTE:10 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 line_xdyi::$8 line_xdyd::$8 ]
reg byte a [ line_ydxi::$8 ]

View File

@ -37,95 +37,93 @@ plots: scope:[plots] from main::@3
to:plots::@1
plots::@1: scope:[plots] from plots plots::@3
[18] (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] ( main:2::plots:13 [ plots::i#2 ] )
[19] (byte~) plots::$0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 ] ( main:2::plots:13 [ plots::i#2 plots::$0 ] )
[20] (byte~) plots::$1 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 plots::$1 ] ( main:2::plots:13 [ plots::i#2 plots::$0 plots::$1 ] )
[21] (byte) plot::x#0 ← (byte~) plots::$0 [ plots::i#2 plots::$1 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plots::$1 plot::x#0 ] )
[22] (byte) plot::y#0 ← (byte~) plots::$1 [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] )
[23] call plot param-assignment [ plots::i#2 ] ( main:2::plots:13 [ plots::i#2 ] )
[19] (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] )
[20] (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] )
[21] call plot param-assignment [ plots::i#2 ] ( main:2::plots:13 [ plots::i#2 ] )
to:plots::@3
plots::@3: scope:[plots] from plots::@1
[24] (byte) plots::i#1 ← ++ (byte) plots::i#2 [ plots::i#1 ] ( main:2::plots:13 [ plots::i#1 ] )
[25] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 [ plots::i#1 ] ( main:2::plots:13 [ plots::i#1 ] )
[22] (byte) plots::i#1 ← ++ (byte) plots::i#2 [ plots::i#1 ] ( main:2::plots:13 [ plots::i#1 ] )
[23] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 [ plots::i#1 ] ( main:2::plots:13 [ plots::i#1 ] )
to:plots::@return
plots::@return: scope:[plots] from plots::@3
[26] return [ ] ( main:2::plots:13 [ ] )
[24] return [ ] ( main:2::plots:13 [ ] )
to:@return
plot: scope:[plot] from plots::@1
[27] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:2::plots:13::plot:23 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] )
[28] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:23 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] )
[29] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ( main:2::plots:13::plot:23 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] )
[30] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:23 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] )
[31] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ( main:2::plots:13::plot:23 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] )
[32] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:23 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] )
[33] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:2::plots:13::plot:23 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] )
[34] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:23 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] )
[35] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:23 [ plots::i#2 plot::x#0 plot::plotter#0 ] )
[36] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:23 [ plots::i#2 plot::plotter#0 plot::$5 ] )
[37] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:2::plots:13::plot:23 [ plots::i#2 plot::plotter#0 plot::$6 ] )
[38] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:2::plots:13::plot:23 [ plots::i#2 ] )
[25] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] )
[26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] )
[27] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] )
[28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] )
[29] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] )
[30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] )
[31] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] )
[32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] )
[33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] )
[34] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] )
[35] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$6 ] )
[36] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] )
to:plot::@return
plot::@return: scope:[plot] from plot
[39] return [ ] ( main:2::plots:13::plot:23 [ plots::i#2 ] )
[37] return [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] )
to:@return
init_plot_tables: scope:[init_plot_tables] from main::@5
[40] phi() [ ] ( main:2::init_plot_tables:10 [ ] )
[38] phi() [ ] ( main:2::init_plot_tables:10 [ ] )
to:init_plot_tables::@1
init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2
[41] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[41] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[42] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] )
[43] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[44] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[45] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[46] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
[47] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
[39] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[39] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[40] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] )
[41] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[42] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[43] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[44] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
[45] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
to:init_plot_tables::@2
init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10
[48] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] )
[49] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
[50] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
[46] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] )
[47] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
[48] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
to:init_plot_tables::@3
init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4
[51] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[51] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[52] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] )
[53] (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 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] )
[54] (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 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] )
[55] *((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 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[56] (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 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] )
[57] *((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 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[58] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] )
[59] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[49] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[49] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[50] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] )
[51] (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 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] )
[52] (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 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] )
[53] *((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 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[54] (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 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] )
[55] *((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 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[56] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] )
[57] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ 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
[60] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] )
[58] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ 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
[61] (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 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] )
[62] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
[63] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
[59] (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 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] )
[60] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
[61] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ 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
[64] return [ ] ( main:2::init_plot_tables:10 [ ] )
[62] return [ ] ( main:2::init_plot_tables:10 [ ] )
to:@return
init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1
[65] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
[63] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
to:init_plot_tables::@2
init_screen: scope:[init_screen] from main
[66] phi() [ ] ( main:2::init_screen:8 [ ] )
[64] phi() [ ] ( main:2::init_screen:8 [ ] )
to:init_screen::@1
init_screen::@1: scope:[init_screen] from init_screen init_screen::@1
[67] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] )
[68] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] )
[69] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] )
[70] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] )
[65] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] )
[66] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] )
[67] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] )
[68] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] )
to:init_screen::@2
init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2
[71] (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 ] ( main:2::init_screen:8 [ init_screen::c#2 ] )
[72] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] )
[73] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] )
[74] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] )
[69] (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 ] ( main:2::init_screen:8 [ init_screen::c#2 ] )
[70] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] )
[71] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] )
[72] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] )
to:init_screen::@return
init_screen::@return: scope:[init_screen] from init_screen::@2
[75] return [ ] ( main:2::init_screen:8 [ ] )
[73] return [ ] ( main:2::init_screen:8 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -96,14 +96,12 @@
(byte[]) plot_ylo
(const byte[]) plot_ylo#0 plot_ylo = ((byte*))(word/signed word) 4608
(void()) plots()
(byte~) plots::$0 reg byte y 101.0
(byte~) plots::$1 reg byte a 101.0
(label) plots::@1
(label) plots::@3
(label) plots::@return
(byte) plots::i
(byte) plots::i#1 i zp ZP_BYTE:2 151.5
(byte) plots::i#2 i zp ZP_BYTE:2 67.33333333333333
(byte) plots::i#2 i zp ZP_BYTE:2 101.0
(byte) plots_cnt
(const byte) plots_cnt#0 plots_cnt = (byte/signed byte/word/signed word) 8
(byte[]) plots_x
@ -116,8 +114,6 @@ reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ]
reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ]
zp ZP_WORD:3 [ 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 [ plots::$0 ]
reg byte a [ plots::$1 ]
reg byte y [ plot::x#0 ]
reg byte x [ plot::y#0 ]
reg byte a [ plot::$0 ]

View File

@ -695,7 +695,7 @@ Not aliassing across scopes: line::x1#1 line::x1#0
Not aliassing across scopes: plot::x#0 line::x0#2
Not aliassing across scopes: plot::x#1 line::x#2
Not aliassing across scopes: plot::x#2 plot::x#0
Alias (byte) line::x#0 = (byte) line::x0#2 (byte) line::x0#1 (byte) line::x0#3
Alias (byte) line::x0#1 = (byte) line::x0#2 (byte) line::x0#3 (byte) line::x#0
Alias (byte) line::x1#1 = (byte) line::x1#4
Alias (byte) line::x#2 = (byte) line::x#3
Alias (byte) line::x1#2 = (byte) line::x1#3
@ -730,19 +730,19 @@ main::@return: scope:[main] from main::@5
to:@return
line: scope:[line] from main::@2
(byte) line::x1#1 ← phi( main::@2/(byte) line::x1#0 )
(byte) line::x#0 ← phi( main::@2/(byte) line::x0#0 )
(boolean~) line::$1 ← (byte) line::x#0 >= (byte) line::x1#1
(byte) line::x0#1 ← phi( main::@2/(byte) line::x0#0 )
(boolean~) line::$1 ← (byte) line::x0#1 >= (byte) line::x1#1
if((boolean~) line::$1) goto line::@1
to:line::@4
line::@1: scope:[line] from line
(byte) plot::x#0 ← (byte) line::x#0
(byte) plot::x#0 ← (byte) line::x0#1
call plot param-assignment
to:line::@return
line::@4: scope:[line] from line
to:line::@2
line::@2: scope:[line] from line::@4 line::@8
(byte) line::x1#2 ← phi( line::@4/(byte) line::x1#1 line::@8/(byte) line::x1#2 )
(byte) line::x#2 ← phi( line::@4/(byte) line::x#0 line::@8/(byte) line::x#1 )
(byte) line::x#2 ← phi( line::@4/(byte) line::x0#1 line::@8/(byte) line::x#1 )
(byte) plot::x#1 ← (byte) line::x#2
call plot param-assignment
to:line::@8
@ -769,9 +769,9 @@ plot::@return: scope:[plot] from plot
to:@end
@end: scope:[] from @3
Not aliassing across scopes: line::x#0 line::x0#0
Not aliassing across scopes: line::x0#1 line::x0#0
Not aliassing across scopes: line::x1#1 line::x1#0
Not aliassing across scopes: plot::x#0 line::x#0
Not aliassing across scopes: plot::x#0 line::x0#1
Not aliassing across scopes: plot::x#1 line::x#2
Not aliassing across scopes: plot::x#2 plot::x#0
Self Phi Eliminated (byte) line::x1#2
@ -805,19 +805,19 @@ main::@return: scope:[main] from main::@5
to:@return
line: scope:[line] from main::@2
(byte) line::x1#1 ← phi( main::@2/(byte) line::x1#0 )
(byte) line::x#0 ← phi( main::@2/(byte) line::x0#0 )
(boolean~) line::$1 ← (byte) line::x#0 >= (byte) line::x1#1
(byte) line::x0#1 ← phi( main::@2/(byte) line::x0#0 )
(boolean~) line::$1 ← (byte) line::x0#1 >= (byte) line::x1#1
if((boolean~) line::$1) goto line::@1
to:line::@4
line::@1: scope:[line] from line
(byte) plot::x#0 ← (byte) line::x#0
(byte) plot::x#0 ← (byte) line::x0#1
call plot param-assignment
to:line::@return
line::@4: scope:[line] from line
to:line::@2
line::@2: scope:[line] from line::@4 line::@8
(byte) line::x1#2 ← phi( line::@4/(byte) line::x1#1 )
(byte) line::x#2 ← phi( line::@4/(byte) line::x#0 line::@8/(byte) line::x#1 )
(byte) line::x#2 ← phi( line::@4/(byte) line::x0#1 line::@8/(byte) line::x#1 )
(byte) plot::x#1 ← (byte) line::x#2
call plot param-assignment
to:line::@8
@ -844,7 +844,7 @@ plot::@return: scope:[plot] from plot
to:@end
@end: scope:[] from @3
Redundant Phi (byte) line::x#0 (byte) line::x0#0
Redundant Phi (byte) line::x0#1 (byte) line::x0#0
Redundant Phi (byte) line::x1#1 (byte) line::x1#0
Redundant Phi (byte) line::x1#2 (byte) line::x1#1
Succesful SSA optimization Pass2RedundantPhiElimination

View File

@ -363,7 +363,7 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(word) main::w#2 ← phi( main/((word))(byte/signed byte/word/signed word) 0 main::@3/(word~) main::w#3 )
(byte) main::i#1 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::j#3 )
(byte) main::i#1 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#2 )
(word) main::w#1 ← (word) main::w#2 + (byte) main::i#1
(byte) main::j#1 ← ++ (byte) main::i#1
if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@3
@ -372,7 +372,7 @@ main::@return: scope:[main] from main::@1
return
to:@return
main::@3: scope:[main] from main::@1
(byte~) main::j#3 ← (byte) main::j#1
(byte~) main::i#2 ← (byte) main::j#1
(word~) main::w#3 ← (word) main::w#1
to:main::@1
@ -403,7 +403,7 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
[5] (word) main::w#2 ← phi( main/((word))(byte/signed byte/word/signed word) 0 main::@3/(word~) main::w#3 ) [ main::i#1 main::w#2 ]
[5] (byte) main::i#1 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::j#3 ) [ main::i#1 main::w#2 ]
[5] (byte) main::i#1 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#2 ) [ main::i#1 main::w#2 ]
[6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 [ main::i#1 main::w#1 ]
[7] (byte) main::j#1 ← ++ (byte) main::i#1 [ main::w#1 main::j#1 ]
[8] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::w#1 main::j#1 ]
@ -412,12 +412,12 @@ main::@return: scope:[main] from main::@1
[9] return [ ]
to:@return
main::@3: scope:[main] from main::@1
[10] (byte~) main::j#3 ← (byte) main::j#1 [ main::j#3 main::w#1 ]
[11] (word~) main::w#3 ← (word) main::w#1 [ main::j#3 main::w#3 ]
[10] (byte~) main::i#2 ← (byte) main::j#1 [ main::i#2 main::w#1 ]
[11] (word~) main::w#3 ← (word) main::w#1 [ main::i#2 main::w#3 ]
to:main::@1
Created 2 initial phi equivalence classes
Coalesced [10] main::j#3 ← main::j#1
Coalesced [10] main::i#2 ← main::j#1
Coalesced [11] main::w#3 ← main::w#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@3

View File

@ -9,12 +9,12 @@
[3] phi() [ ] ( )
main: scope:[main] from @2
[4] phi() [ ] ( main:2 [ ] )
[5] call inci param-assignment [ inci::return#2 inci::$0 ] ( main:2 [ inci::return#2 inci::$0 ] )
[6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 inci::$0 ] ( main:2 [ inci::return#0 inci::$0 ] )
[5] call inci param-assignment [ inci::return#2 i#11 ] ( main:2 [ inci::return#2 i#11 ] )
[6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 i#11 ] ( main:2 [ inci::return#0 i#11 ] )
to:main::@1
main::@1: scope:[main] from main
[7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:2 [ main::$0 inci::$0 ] )
[8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:2 [ main::a#1 inci::$0 ] )
[7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 i#11 ] ( main:2 [ main::$0 i#11 ] )
[8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 i#11 ] ( main:2 [ main::a#1 i#11 ] )
[9] call inci param-assignment [ inci::return#2 main::a#1 ] ( main:2 [ inci::return#2 main::a#1 ] )
[10] (byte) inci::return#1 ← (byte) inci::return#2 [ main::a#1 inci::return#1 ] ( main:2 [ main::a#1 inci::return#1 ] )
to:main::@2
@ -26,10 +26,10 @@ main::@return: scope:[main] from main::@2
[13] return [ ] ( main:2 [ ] )
to:@return
inci: scope:[inci] from main main::@1
[14] (byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) inci::$0 ) [ i#10 ] ( main:2::inci:5 [ i#10 ] main:2::inci:9 [ main::a#1 i#10 ] )
[15] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:2::inci:5 [ inci::$0 ] main:2::inci:9 [ main::a#1 inci::$0 ] )
[16] (byte) inci::return#2 ← (byte~) inci::$0 [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] )
[14] (byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) i#11 ) [ i#10 ] ( main:2::inci:5 [ i#10 ] main:2::inci:9 [ main::a#1 i#10 ] )
[15] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] main:2::inci:9 [ main::a#1 i#11 ] )
[16] (byte) inci::return#2 ← (byte) i#11 [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] )
to:inci::@return
inci::@return: scope:[inci] from inci
[17] return [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] )
[17] return [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] )
to:@return

View File

@ -332,7 +332,6 @@ Not aliassing across scopes: inci::return#1 inci::return#3
Not aliassing across scopes: i#8 i#5
Not aliassing across scopes: main::$2 inci::return#5
Not aliassing across scopes: i#10 i#13
Not aliassing across scopes: i#4 inci::$0
Not aliassing across scopes: inci::return#2 i#4
Not aliassing across scopes: i#12 i#3
Alias (byte) inci::return#0 = (byte) inci::return#4
@ -342,8 +341,8 @@ Alias (byte) main::a#1 = (byte~) main::$1 (byte) main::a#4
Alias (byte) inci::return#1 = (byte) inci::return#5
Alias (byte) i#2 = (byte) i#8 (byte) i#9 (byte) i#3
Alias (byte) main::a#2 = (byte~) main::$3
Alias (byte) i#11 = (byte) i#4 (byte~) inci::$0 (byte) i#5
Alias (byte) inci::return#2 = (byte) inci::return#6 (byte) inci::return#3
Alias (byte) i#11 = (byte) i#4 (byte) i#5
Alias (byte) i#0 = (byte) i#14
Alias (byte) i#12 = (byte) i#6
Succesful SSA optimization Pass2AliasElimination
@ -374,8 +373,7 @@ main::@return: scope:[main] from main::@2
to:@return
inci: scope:[inci] from main main::@1
(byte) i#10 ← phi( main/(byte) i#13 main::@1/(byte) i#1 )
(byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7
(byte) i#11 ← (byte~) inci::$0
(byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7
(byte) inci::return#2 ← (byte) i#11
to:inci::@return
inci::@return: scope:[inci] from inci
@ -397,7 +395,6 @@ Not aliassing across scopes: inci::return#1 inci::return#2
Not aliassing across scopes: i#2 i#11
Not aliassing across scopes: main::$2 inci::return#1
Not aliassing across scopes: i#10 i#13
Not aliassing across scopes: i#11 inci::$0
Not aliassing across scopes: inci::return#2 i#11
Not aliassing across scopes: i#12 i#2
Redundant Phi (byte) i#13 (byte) i#0
@ -429,8 +426,7 @@ main::@return: scope:[main] from main::@2
to:@return
inci: scope:[inci] from main main::@1
(byte) i#10 ← phi( main/(byte) i#0 main::@1/(byte) i#11 )
(byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7
(byte) i#11 ← (byte~) inci::$0
(byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7
(byte) inci::return#2 ← (byte) i#11
to:inci::@return
inci::@return: scope:[inci] from inci
@ -468,8 +464,7 @@ main::@return: scope:[main] from main::@2
to:@return
inci: scope:[inci] from main main::@1
(byte) i#10 ← phi( main/(const byte) i#0 main::@1/(byte) i#11 )
(byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7
(byte) i#11 ← (byte~) inci::$0
(byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7
(byte) inci::return#2 ← (byte) i#11
to:inci::@return
inci::@return: scope:[inci] from inci
@ -506,8 +501,7 @@ main::@return: scope:[main] from main::@2
to:@return
inci: scope:[inci] from main main::@1
(byte) i#10 ← phi( main/(const byte) i#0 main::@1/(byte) i#11 )
(byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7
(byte) i#11 ← (byte~) inci::$0
(byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7
(byte) inci::return#2 ← (byte) i#11
to:inci::@return
inci::@return: scope:[inci] from inci
@ -522,13 +516,11 @@ Not aliassing across scopes: inci::return#0 inci::return#2
Not aliassing across scopes: main::$0 inci::return#0
Not aliassing across scopes: inci::return#1 inci::return#2
Not aliassing across scopes: main::$2 inci::return#1
Not aliassing across scopes: i#11 inci::$0
Not aliassing across scopes: inci::return#2 i#11
Not aliassing across scopes: inci::return#0 inci::return#2
Not aliassing across scopes: main::$0 inci::return#0
Not aliassing across scopes: inci::return#1 inci::return#2
Not aliassing across scopes: main::$2 inci::return#1
Not aliassing across scopes: i#11 inci::$0
Not aliassing across scopes: inci::return#2 i#11
Inlining constant with var siblings (const byte) main::a#0
Inlining constant with var siblings (const byte) main::a#0
@ -559,8 +551,7 @@ main::@return: scope:[main] from main::@2
to:@return
inci: scope:[inci] from main main::@1
(byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) i#11 )
(byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7
(byte) i#11 ← (byte~) inci::$0
(byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7
(byte) inci::return#2 ← (byte) i#11
to:inci::@return
inci::@return: scope:[inci] from inci
@ -579,7 +570,6 @@ FINAL SYMBOL TABLE
(byte) i#10
(byte) i#11
(byte()) inci()
(byte~) inci::$0
(label) inci::@return
(byte) inci::return
(byte) inci::return#0
@ -624,8 +614,7 @@ main::@return: scope:[main] from main::@2
to:@return
inci: scope:[inci] from main main::@1
(byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) i#15 )
(byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7
(byte) i#11 ← (byte~) inci::$0
(byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7
(byte) inci::return#2 ← (byte) i#11
to:inci::@return
inci::@return: scope:[inci] from inci
@ -677,17 +666,15 @@ main::@return: scope:[main] from main::@2
to:@return
inci: scope:[inci] from main main::@1
[15] (byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) i#15 ) [ i#10 ]
[16] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ]
[17] (byte) i#11 ← (byte~) inci::$0 [ i#11 ]
[18] (byte) inci::return#2 ← (byte) i#11 [ inci::return#2 i#11 ]
[16] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ i#11 ]
[17] (byte) inci::return#2 ← (byte) i#11 [ inci::return#2 i#11 ]
to:inci::@return
inci::@return: scope:[inci] from inci
[19] return [ inci::return#2 i#11 ]
[18] return [ inci::return#2 i#11 ]
to:@return
Created 1 initial phi equivalence classes
Coalesced [9] i#15 ← i#11
Coalesced [17] i#11 ← inci::$0
Coalesced down to 1 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return inci inci::@return
Adding NOP phi() at start of @begin
@ -712,12 +699,12 @@ CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES
[3] phi() [ ]
main: scope:[main] from @2
[4] phi() [ ]
[5] call inci param-assignment [ inci::return#2 inci::$0 ]
[6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 inci::$0 ]
[5] call inci param-assignment [ inci::return#2 i#11 ]
[6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 i#11 ]
to:main::@1
main::@1: scope:[main] from main
[7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ]
[8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ]
[7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 i#11 ]
[8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 i#11 ]
[9] call inci param-assignment [ inci::return#2 main::a#1 ]
[10] (byte) inci::return#1 ← (byte) inci::return#2 [ main::a#1 inci::return#1 ]
to:main::@2
@ -729,12 +716,12 @@ main::@return: scope:[main] from main::@2
[13] return [ ]
to:@return
inci: scope:[inci] from main main::@1
[14] (byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) inci::$0 ) [ i#10 ]
[15] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ]
[16] (byte) inci::return#2 ← (byte~) inci::$0 [ inci::return#2 inci::$0 ]
[14] (byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) i#11 ) [ i#10 ]
[15] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ i#11 ]
[16] (byte) inci::return#2 ← (byte) i#11 [ inci::return#2 i#11 ]
to:inci::@return
inci::@return: scope:[inci] from inci
[17] return [ inci::return#2 inci::$0 ]
[17] return [ inci::return#2 i#11 ]
to:@return
CONTROL FLOW GRAPH - PHI MEM COALESCED
@ -749,12 +736,12 @@ CONTROL FLOW GRAPH - PHI MEM COALESCED
[3] phi() [ ] ( )
main: scope:[main] from @2
[4] phi() [ ] ( main:2 [ ] )
[5] call inci param-assignment [ inci::return#2 inci::$0 ] ( main:2 [ inci::return#2 inci::$0 ] )
[6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 inci::$0 ] ( main:2 [ inci::return#0 inci::$0 ] )
[5] call inci param-assignment [ inci::return#2 i#11 ] ( main:2 [ inci::return#2 i#11 ] )
[6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 i#11 ] ( main:2 [ inci::return#0 i#11 ] )
to:main::@1
main::@1: scope:[main] from main
[7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:2 [ main::$0 inci::$0 ] )
[8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:2 [ main::a#1 inci::$0 ] )
[7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 i#11 ] ( main:2 [ main::$0 i#11 ] )
[8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 i#11 ] ( main:2 [ main::a#1 i#11 ] )
[9] call inci param-assignment [ inci::return#2 main::a#1 ] ( main:2 [ inci::return#2 main::a#1 ] )
[10] (byte) inci::return#1 ← (byte) inci::return#2 [ main::a#1 inci::return#1 ] ( main:2 [ main::a#1 inci::return#1 ] )
to:main::@2
@ -766,12 +753,12 @@ main::@return: scope:[main] from main::@2
[13] return [ ] ( main:2 [ ] )
to:@return
inci: scope:[inci] from main main::@1
[14] (byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) inci::$0 ) [ i#10 ] ( main:2::inci:5 [ i#10 ] main:2::inci:9 [ main::a#1 i#10 ] )
[15] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:2::inci:5 [ inci::$0 ] main:2::inci:9 [ main::a#1 inci::$0 ] )
[16] (byte) inci::return#2 ← (byte~) inci::$0 [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] )
[14] (byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) i#11 ) [ i#10 ] ( main:2::inci:5 [ i#10 ] main:2::inci:9 [ main::a#1 i#10 ] )
[15] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] main:2::inci:9 [ main::a#1 i#11 ] )
[16] (byte) inci::return#2 ← (byte) i#11 [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] )
to:inci::@return
inci::@return: scope:[inci] from inci
[17] return [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] )
[17] return [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] )
to:@return
DOMINATORS
@ -796,8 +783,8 @@ NATURAL LOOPS WITH DEPTH
VARIABLE REGISTER WEIGHTS
(byte) i
(byte) i#10 4.0
(byte) i#11 0.8571428571428571
(byte()) inci()
(byte~) inci::$0 0.8571428571428571
(byte) inci::return
(byte) inci::return#0 4.0
(byte) inci::return#1 4.0
@ -810,7 +797,7 @@ VARIABLE REGISTER WEIGHTS
(byte) main::a#2 20.0
Initial phi equivalence classes
[ i#10 inci::$0 ]
[ i#10 i#11 ]
Added variable inci::return#0 to zero page equivalence class [ inci::return#0 ]
Added variable main::$0 to zero page equivalence class [ main::$0 ]
Added variable main::a#1 to zero page equivalence class [ main::a#1 ]
@ -819,7 +806,7 @@ Added variable main::$2 to zero page equivalence class [ main::$2 ]
Added variable main::a#2 to zero page equivalence class [ main::a#2 ]
Added variable inci::return#2 to zero page equivalence class [ inci::return#2 ]
Complete equivalence classes
[ i#10 inci::$0 ]
[ i#10 i#11 ]
[ inci::return#0 ]
[ main::$0 ]
[ main::a#1 ]
@ -827,7 +814,7 @@ Complete equivalence classes
[ main::$2 ]
[ main::a#2 ]
[ inci::return#2 ]
Allocated zp ZP_BYTE:2 [ i#10 inci::$0 ]
Allocated zp ZP_BYTE:2 [ i#10 i#11 ]
Allocated zp ZP_BYTE:3 [ inci::return#0 ]
Allocated zp ZP_BYTE:4 [ main::$0 ]
Allocated zp ZP_BYTE:5 [ main::a#1 ]
@ -864,23 +851,23 @@ main: {
.label _2 = 7
.label a = 5
.label a_2 = 8
//SEG10 [5] call inci param-assignment [ inci::return#2 inci::$0 ] ( main:2 [ inci::return#2 inci::$0 ] )
//SEG10 [5] call inci param-assignment [ inci::return#2 i#11 ] ( main:2 [ inci::return#2 i#11 ] )
//SEG11 [14] phi from main to inci [phi:main->inci]
inci_from_main:
//SEG12 [14] phi (byte) i#10 = (byte/signed byte/word/signed word) 0 [phi:main->inci#0] -- vbuz1=vbuc1
lda #0
sta i
jsr inci
//SEG13 [6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 inci::$0 ] ( main:2 [ inci::return#0 inci::$0 ] ) -- vbuz1=vbuz2
//SEG13 [6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 i#11 ] ( main:2 [ inci::return#0 i#11 ] ) -- vbuz1=vbuz2
lda inci.return_2
sta inci.return
jmp b1
//SEG14 main::@1
b1:
//SEG15 [7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:2 [ main::$0 inci::$0 ] ) -- vbuz1=vbuz2
//SEG15 [7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 i#11 ] ( main:2 [ main::$0 i#11 ] ) -- vbuz1=vbuz2
lda inci.return
sta _0
//SEG16 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:2 [ main::a#1 inci::$0 ] ) -- vbuz1=vbuc1_plus_vbuz2
//SEG16 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 i#11 ] ( main:2 [ main::a#1 i#11 ] ) -- vbuz1=vbuc1_plus_vbuz2
lda _0
clc
adc #4
@ -888,7 +875,7 @@ main: {
//SEG17 [9] call inci param-assignment [ inci::return#2 main::a#1 ] ( main:2 [ inci::return#2 main::a#1 ] )
//SEG18 [14] phi from main::@1 to inci [phi:main::@1->inci]
inci_from_b1:
//SEG19 [14] phi (byte) i#10 = (byte~) inci::$0 [phi:main::@1->inci#0] -- register_copy
//SEG19 [14] phi (byte) i#10 = (byte) i#11 [phi:main::@1->inci#0] -- register_copy
jsr inci
//SEG20 [10] (byte) inci::return#1 ← (byte) inci::return#2 [ main::a#1 inci::return#1 ] ( main:2 [ main::a#1 inci::return#1 ] ) -- vbuz1=vbuz2
lda inci.return_2
@ -912,34 +899,33 @@ main: {
}
//SEG26 inci
inci: {
.label _0 = 2
.label return = 3
.label return_1 = 6
.label return_2 = 9
//SEG27 [15] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:2::inci:5 [ inci::$0 ] main:2::inci:9 [ main::a#1 inci::$0 ] ) -- vbuz1=vbuz1_plus_vbuc1
lda _0
//SEG27 [15] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] main:2::inci:9 [ main::a#1 i#11 ] ) -- vbuz1=vbuz1_plus_vbuc1
lda i
clc
adc #7
sta _0
//SEG28 [16] (byte) inci::return#2 ← (byte~) inci::$0 [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] ) -- vbuz1=vbuz2
lda _0
sta i
//SEG28 [16] (byte) inci::return#2 ← (byte) i#11 [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] ) -- vbuz1=vbuz2
lda i
sta return_2
jmp breturn
//SEG29 inci::@return
breturn:
//SEG30 [17] return [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] )
//SEG30 [17] return [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] )
rts
}
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:2 [ main::a#1 inci::$0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ i#10 inci::$0 ]
Statement [15] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:2::inci:5 [ inci::$0 ] main:2::inci:9 [ main::a#1 inci::$0 ] ) always clobbers reg byte a
Statement [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 i#11 ] ( main:2 [ main::a#1 i#11 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ i#10 i#11 ]
Statement [15] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] main:2::inci:9 [ main::a#1 i#11 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ main::a#1 ]
Statement [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:2 [ main::a#1 inci::$0 ] ) always clobbers reg byte a
Statement [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 i#11 ] ( main:2 [ main::a#1 i#11 ] ) always clobbers reg byte a
Statement [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [15] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:2::inci:5 [ inci::$0 ] main:2::inci:9 [ main::a#1 inci::$0 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ i#10 inci::$0 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
Statement [15] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] main:2::inci:9 [ main::a#1 i#11 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ i#10 i#11 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:3 [ inci::return#0 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:4 [ main::$0 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:5 [ main::a#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y ,
@ -951,11 +937,11 @@ Potential registers zp ZP_BYTE:9 [ inci::return#2 ] : zp ZP_BYTE:9 , reg byte a
REGISTER UPLIFT SCOPES
Uplift Scope [main] 20: zp ZP_BYTE:8 [ main::a#2 ] 4: zp ZP_BYTE:4 [ main::$0 ] 4: zp ZP_BYTE:7 [ main::$2 ] 1: zp ZP_BYTE:5 [ main::a#1 ]
Uplift Scope [inci] 4: zp ZP_BYTE:3 [ inci::return#0 ] 4: zp ZP_BYTE:6 [ inci::return#1 ] 1.5: zp ZP_BYTE:9 [ inci::return#2 ]
Uplift Scope [] 4.86: zp ZP_BYTE:2 [ i#10 inci::$0 ]
Uplift Scope [] 4.86: zp ZP_BYTE:2 [ i#10 i#11 ]
Uplifting [main] best 99 combination reg byte a [ main::a#2 ] reg byte a [ main::$0 ] reg byte a [ main::$2 ] zp ZP_BYTE:5 [ main::a#1 ]
Uplifting [inci] best 78 combination reg byte a [ inci::return#0 ] reg byte a [ inci::return#1 ] reg byte a [ inci::return#2 ]
Uplifting [] best 72 combination reg byte x [ i#10 inci::$0 ]
Uplifting [] best 72 combination reg byte x [ i#10 i#11 ]
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ main::a#1 ]
Uplifting [main] best 72 combination zp ZP_BYTE:5 [ main::a#1 ]
Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:2 [ main::a#1 ]
@ -989,26 +975,26 @@ bend:
//SEG9 main
main: {
.label a = 2
//SEG10 [5] call inci param-assignment [ inci::return#2 inci::$0 ] ( main:2 [ inci::return#2 inci::$0 ] )
//SEG10 [5] call inci param-assignment [ inci::return#2 i#11 ] ( main:2 [ inci::return#2 i#11 ] )
//SEG11 [14] phi from main to inci [phi:main->inci]
inci_from_main:
//SEG12 [14] phi (byte) i#10 = (byte/signed byte/word/signed word) 0 [phi:main->inci#0] -- vbuxx=vbuc1
ldx #0
jsr inci
//SEG13 [6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 inci::$0 ] ( main:2 [ inci::return#0 inci::$0 ] )
//SEG13 [6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 i#11 ] ( main:2 [ inci::return#0 i#11 ] )
// (byte) inci::return#0 = (byte) inci::return#2 // register copy reg byte a
//SEG14 main::@1
b1:
//SEG15 [7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:2 [ main::$0 inci::$0 ] )
//SEG15 [7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 i#11 ] ( main:2 [ main::$0 i#11 ] )
// (byte~) main::$0 = (byte) inci::return#0 // register copy reg byte a
//SEG16 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:2 [ main::a#1 inci::$0 ] ) -- vbuz1=vbuc1_plus_vbuaa
//SEG16 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 i#11 ] ( main:2 [ main::a#1 i#11 ] ) -- vbuz1=vbuc1_plus_vbuaa
clc
adc #4
sta a
//SEG17 [9] call inci param-assignment [ inci::return#2 main::a#1 ] ( main:2 [ inci::return#2 main::a#1 ] )
//SEG18 [14] phi from main::@1 to inci [phi:main::@1->inci]
inci_from_b1:
//SEG19 [14] phi (byte) i#10 = (byte~) inci::$0 [phi:main::@1->inci#0] -- register_copy
//SEG19 [14] phi (byte) i#10 = (byte) i#11 [phi:main::@1->inci#0] -- register_copy
jsr inci
//SEG20 [10] (byte) inci::return#1 ← (byte) inci::return#2 [ main::a#1 inci::return#1 ] ( main:2 [ main::a#1 inci::return#1 ] )
// (byte) inci::return#1 = (byte) inci::return#2 // register copy reg byte a
@ -1026,16 +1012,16 @@ main: {
}
//SEG26 inci
inci: {
//SEG27 [15] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:2::inci:5 [ inci::$0 ] main:2::inci:9 [ main::a#1 inci::$0 ] ) -- vbuxx=vbuxx_plus_vbuc1
//SEG27 [15] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] main:2::inci:9 [ main::a#1 i#11 ] ) -- vbuxx=vbuxx_plus_vbuc1
txa
clc
adc #7
tax
//SEG28 [16] (byte) inci::return#2 ← (byte~) inci::$0 [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] ) -- vbuaa=vbuxx
//SEG28 [16] (byte) inci::return#2 ← (byte) i#11 [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] ) -- vbuaa=vbuxx
txa
//SEG29 inci::@return
breturn:
//SEG30 [17] return [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] )
//SEG30 [17] return [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] )
rts
}
@ -1063,26 +1049,26 @@ bend:
//SEG9 main
main: {
.label a = 2
//SEG10 [5] call inci param-assignment [ inci::return#2 inci::$0 ] ( main:2 [ inci::return#2 inci::$0 ] )
//SEG10 [5] call inci param-assignment [ inci::return#2 i#11 ] ( main:2 [ inci::return#2 i#11 ] )
//SEG11 [14] phi from main to inci [phi:main->inci]
inci_from_main:
//SEG12 [14] phi (byte) i#10 = (byte/signed byte/word/signed word) 0 [phi:main->inci#0] -- vbuxx=vbuc1
ldx #0
jsr inci
//SEG13 [6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 inci::$0 ] ( main:2 [ inci::return#0 inci::$0 ] )
//SEG13 [6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 i#11 ] ( main:2 [ inci::return#0 i#11 ] )
// (byte) inci::return#0 = (byte) inci::return#2 // register copy reg byte a
//SEG14 main::@1
b1:
//SEG15 [7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:2 [ main::$0 inci::$0 ] )
//SEG15 [7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 i#11 ] ( main:2 [ main::$0 i#11 ] )
// (byte~) main::$0 = (byte) inci::return#0 // register copy reg byte a
//SEG16 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:2 [ main::a#1 inci::$0 ] ) -- vbuz1=vbuc1_plus_vbuaa
//SEG16 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 i#11 ] ( main:2 [ main::a#1 i#11 ] ) -- vbuz1=vbuc1_plus_vbuaa
clc
adc #4
sta a
//SEG17 [9] call inci param-assignment [ inci::return#2 main::a#1 ] ( main:2 [ inci::return#2 main::a#1 ] )
//SEG18 [14] phi from main::@1 to inci [phi:main::@1->inci]
inci_from_b1:
//SEG19 [14] phi (byte) i#10 = (byte~) inci::$0 [phi:main::@1->inci#0] -- register_copy
//SEG19 [14] phi (byte) i#10 = (byte) i#11 [phi:main::@1->inci#0] -- register_copy
jsr inci
//SEG20 [10] (byte) inci::return#1 ← (byte) inci::return#2 [ main::a#1 inci::return#1 ] ( main:2 [ main::a#1 inci::return#1 ] )
// (byte) inci::return#1 = (byte) inci::return#2 // register copy reg byte a
@ -1100,16 +1086,16 @@ main: {
}
//SEG26 inci
inci: {
//SEG27 [15] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:2::inci:5 [ inci::$0 ] main:2::inci:9 [ main::a#1 inci::$0 ] ) -- vbuxx=vbuxx_plus_vbuc1
//SEG27 [15] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] main:2::inci:9 [ main::a#1 i#11 ] ) -- vbuxx=vbuxx_plus_vbuc1
txa
clc
adc #7
tax
//SEG28 [16] (byte) inci::return#2 ← (byte~) inci::$0 [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] ) -- vbuaa=vbuxx
//SEG28 [16] (byte) inci::return#2 ← (byte) i#11 [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] ) -- vbuaa=vbuxx
txa
//SEG29 inci::@return
breturn:
//SEG30 [17] return [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] )
//SEG30 [17] return [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] )
rts
}
@ -1139,23 +1125,23 @@ ASSEMBLER
//SEG9 main
main: {
.label a = 2
//SEG10 [5] call inci param-assignment [ inci::return#2 inci::$0 ] ( main:2 [ inci::return#2 inci::$0 ] )
//SEG10 [5] call inci param-assignment [ inci::return#2 i#11 ] ( main:2 [ inci::return#2 i#11 ] )
//SEG11 [14] phi from main to inci [phi:main->inci]
//SEG12 [14] phi (byte) i#10 = (byte/signed byte/word/signed word) 0 [phi:main->inci#0] -- vbuxx=vbuc1
ldx #0
jsr inci
//SEG13 [6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 inci::$0 ] ( main:2 [ inci::return#0 inci::$0 ] )
//SEG13 [6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 i#11 ] ( main:2 [ inci::return#0 i#11 ] )
// (byte) inci::return#0 = (byte) inci::return#2 // register copy reg byte a
//SEG14 main::@1
//SEG15 [7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:2 [ main::$0 inci::$0 ] )
//SEG15 [7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 i#11 ] ( main:2 [ main::$0 i#11 ] )
// (byte~) main::$0 = (byte) inci::return#0 // register copy reg byte a
//SEG16 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:2 [ main::a#1 inci::$0 ] ) -- vbuz1=vbuc1_plus_vbuaa
//SEG16 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 i#11 ] ( main:2 [ main::a#1 i#11 ] ) -- vbuz1=vbuc1_plus_vbuaa
clc
adc #4
sta a
//SEG17 [9] call inci param-assignment [ inci::return#2 main::a#1 ] ( main:2 [ inci::return#2 main::a#1 ] )
//SEG18 [14] phi from main::@1 to inci [phi:main::@1->inci]
//SEG19 [14] phi (byte) i#10 = (byte~) inci::$0 [phi:main::@1->inci#0] -- register_copy
//SEG19 [14] phi (byte) i#10 = (byte) i#11 [phi:main::@1->inci#0] -- register_copy
jsr inci
//SEG20 [10] (byte) inci::return#1 ← (byte) inci::return#2 [ main::a#1 inci::return#1 ] ( main:2 [ main::a#1 inci::return#1 ] )
// (byte) inci::return#1 = (byte) inci::return#2 // register copy reg byte a
@ -1171,15 +1157,15 @@ main: {
}
//SEG26 inci
inci: {
//SEG27 [15] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:2::inci:5 [ inci::$0 ] main:2::inci:9 [ main::a#1 inci::$0 ] ) -- vbuxx=vbuxx_plus_vbuc1
//SEG27 [15] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] main:2::inci:9 [ main::a#1 i#11 ] ) -- vbuxx=vbuxx_plus_vbuc1
txa
clc
adc #7
tax
//SEG28 [16] (byte) inci::return#2 ← (byte~) inci::$0 [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] ) -- vbuaa=vbuxx
//SEG28 [16] (byte) inci::return#2 ← (byte) i#11 [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] ) -- vbuaa=vbuxx
txa
//SEG29 inci::@return
//SEG30 [17] return [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] )
//SEG30 [17] return [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] )
rts
}
@ -1189,8 +1175,8 @@ FINAL SYMBOL TABLE
(label) @end
(byte) i
(byte) i#10 reg byte x 4.0
(byte) i#11 reg byte x 0.8571428571428571
(byte()) inci()
(byte~) inci::$0 reg byte x 0.8571428571428571
(label) inci::@return
(byte) inci::return
(byte) inci::return#0 reg byte a 4.0
@ -1206,7 +1192,7 @@ FINAL SYMBOL TABLE
(byte) main::a#1 a zp ZP_BYTE:2 1.0
(byte) main::a#2 reg byte a 20.0
reg byte x [ i#10 inci::$0 ]
reg byte x [ i#10 i#11 ]
reg byte a [ inci::return#0 ]
reg byte a [ main::$0 ]
zp ZP_BYTE:2 [ main::a#1 ]
@ -1232,23 +1218,23 @@ FINAL CODE
//SEG9 main
main: {
.label a = 2
//SEG10 [5] call inci param-assignment [ inci::return#2 inci::$0 ] ( main:2 [ inci::return#2 inci::$0 ] )
//SEG10 [5] call inci param-assignment [ inci::return#2 i#11 ] ( main:2 [ inci::return#2 i#11 ] )
//SEG11 [14] phi from main to inci [phi:main->inci]
//SEG12 [14] phi (byte) i#10 = (byte/signed byte/word/signed word) 0 [phi:main->inci#0] -- vbuxx=vbuc1
ldx #0
jsr inci
//SEG13 [6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 inci::$0 ] ( main:2 [ inci::return#0 inci::$0 ] )
//SEG13 [6] (byte) inci::return#0 ← (byte) inci::return#2 [ inci::return#0 i#11 ] ( main:2 [ inci::return#0 i#11 ] )
// (byte) inci::return#0 = (byte) inci::return#2 // register copy reg byte a
//SEG14 main::@1
//SEG15 [7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:2 [ main::$0 inci::$0 ] )
//SEG15 [7] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 i#11 ] ( main:2 [ main::$0 i#11 ] )
// (byte~) main::$0 = (byte) inci::return#0 // register copy reg byte a
//SEG16 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:2 [ main::a#1 inci::$0 ] ) -- vbuz1=vbuc1_plus_vbuaa
//SEG16 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 i#11 ] ( main:2 [ main::a#1 i#11 ] ) -- vbuz1=vbuc1_plus_vbuaa
clc
adc #4
sta a
//SEG17 [9] call inci param-assignment [ inci::return#2 main::a#1 ] ( main:2 [ inci::return#2 main::a#1 ] )
//SEG18 [14] phi from main::@1 to inci [phi:main::@1->inci]
//SEG19 [14] phi (byte) i#10 = (byte~) inci::$0 [phi:main::@1->inci#0] -- register_copy
//SEG19 [14] phi (byte) i#10 = (byte) i#11 [phi:main::@1->inci#0] -- register_copy
jsr inci
//SEG20 [10] (byte) inci::return#1 ← (byte) inci::return#2 [ main::a#1 inci::return#1 ] ( main:2 [ main::a#1 inci::return#1 ] )
// (byte) inci::return#1 = (byte) inci::return#2 // register copy reg byte a
@ -1264,15 +1250,15 @@ main: {
}
//SEG26 inci
inci: {
//SEG27 [15] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:2::inci:5 [ inci::$0 ] main:2::inci:9 [ main::a#1 inci::$0 ] ) -- vbuxx=vbuxx_plus_vbuc1
//SEG27 [15] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] main:2::inci:9 [ main::a#1 i#11 ] ) -- vbuxx=vbuxx_plus_vbuc1
txa
clc
adc #7
tax
//SEG28 [16] (byte) inci::return#2 ← (byte~) inci::$0 [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] ) -- vbuaa=vbuxx
//SEG28 [16] (byte) inci::return#2 ← (byte) i#11 [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] ) -- vbuaa=vbuxx
txa
//SEG29 inci::@return
//SEG30 [17] return [ inci::return#2 inci::$0 ] ( main:2::inci:5 [ inci::return#2 inci::$0 ] main:2::inci:9 [ main::a#1 inci::return#2 inci::$0 ] )
//SEG30 [17] return [ inci::return#2 i#11 ] ( main:2::inci:5 [ inci::return#2 i#11 ] main:2::inci:9 [ main::a#1 inci::return#2 i#11 ] )
rts
}

View File

@ -3,8 +3,8 @@
(label) @end
(byte) i
(byte) i#10 reg byte x 4.0
(byte) i#11 reg byte x 0.8571428571428571
(byte()) inci()
(byte~) inci::$0 reg byte x 0.8571428571428571
(label) inci::@return
(byte) inci::return
(byte) inci::return#0 reg byte a 4.0
@ -20,7 +20,7 @@
(byte) main::a#1 a zp ZP_BYTE:2 1.0
(byte) main::a#2 reg byte a 20.0
reg byte x [ i#10 inci::$0 ]
reg byte x [ i#10 i#11 ]
reg byte a [ inci::return#0 ]
reg byte a [ main::$0 ]
zp ZP_BYTE:2 [ main::a#1 ]

View File

@ -37,17 +37,16 @@ line: scope:[line] from main::@1 main::@2
[18] call plot param-assignment [ line::l#2 ] ( main:2::line:7 [ main::i#2 line::l#2 ] main:2::line:12 [ main::j#2 line::l#2 ] )
to:line::@1
line::@1: scope:[line] from line
[19] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:2::line:7 [ main::i#2 line::$1 ] main:2::line:12 [ main::j#2 line::$1 ] )
[20] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] )
[21] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
[19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] )
[20] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
to:line::@return
line::@return: scope:[line] from line::@1
[22] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
[21] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
to:@return
plot: scope:[plot] from line line::@1
[23] (byte) plot::x#2 ← phi( line/(byte) plot::x#0 line::@1/(byte) plot::x#1 ) [ plot::x#2 ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 plot::x#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 plot::x#2 ] main:2::line:7::plot:21 [ main::i#2 plot::x#2 ] main:2::line:12::plot:21 [ main::j#2 plot::x#2 ] )
[24] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] )
[22] (byte) plot::x#2 ← phi( line/(byte) plot::x#0 line::@1/(byte) plot::x#1 ) [ plot::x#2 ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 plot::x#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 plot::x#2 ] main:2::line:7::plot:20 [ main::i#2 plot::x#2 ] main:2::line:12::plot:20 [ main::j#2 plot::x#2 ] )
[23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] )
to:plot::@return
plot::@return: scope:[plot] from plot
[25] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] )
[24] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] )
to:@return

View File

@ -523,7 +523,6 @@ Not aliassing across scopes: line::l#1 main::j#2
Not aliassing across scopes: line::l#2 line::l#0
Not aliassing across scopes: SCREEN#2 SCREEN#4
Not aliassing across scopes: plot::x#0 line::l#2
Not aliassing across scopes: plot::x#1 line::$1
Not aliassing across scopes: SCREEN#1 SCREEN#2
Not aliassing across scopes: plot::x#2 plot::x#0
Alias (byte) main::i#2 = (byte) main::i#3
@ -532,6 +531,7 @@ Alias (byte) main::j#2 = (byte) main::j#3
Alias (byte*) SCREEN#5 = (byte*) SCREEN#9
Alias (byte) line::l#2 = (byte) line::l#3
Alias (byte*) SCREEN#2 = (byte*) SCREEN#3
Alias (byte) plot::x#1 = (byte~) line::$1
Alias (byte*) SCREEN#0 = (byte*) SCREEN#10
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@ -577,8 +577,7 @@ line: scope:[line] from main::@1 main::@2
call plot param-assignment
to:line::@1
line::@1: scope:[line] from line
(byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
(byte) plot::x#1 ← (byte~) line::$1
(byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
call plot param-assignment
to:line::@return
line::@return: scope:[line] from line::@1
@ -603,7 +602,6 @@ Not aliassing across scopes: line::l#1 main::j#2
Not aliassing across scopes: line::l#2 line::l#0
Not aliassing across scopes: SCREEN#2 SCREEN#4
Not aliassing across scopes: plot::x#0 line::l#2
Not aliassing across scopes: plot::x#1 line::$1
Not aliassing across scopes: SCREEN#1 SCREEN#2
Not aliassing across scopes: plot::x#2 plot::x#0
Self Phi Eliminated (byte*) SCREEN#4
@ -652,8 +650,7 @@ line: scope:[line] from main::@1 main::@2
call plot param-assignment
to:line::@1
line::@1: scope:[line] from line
(byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
(byte) plot::x#1 ← (byte~) line::$1
(byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
call plot param-assignment
to:line::@return
line::@return: scope:[line] from line::@1
@ -717,8 +714,7 @@ line: scope:[line] from main::@1 main::@2
call plot param-assignment
to:line::@1
line::@1: scope:[line] from line
(byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
(byte) plot::x#1 ← (byte~) line::$1
(byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
call plot param-assignment
to:line::@return
line::@return: scope:[line] from line::@1
@ -777,8 +773,7 @@ line: scope:[line] from main::@1 main::@2
call plot param-assignment
to:line::@1
line::@1: scope:[line] from line
(byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
(byte) plot::x#1 ← (byte~) line::$1
(byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
call plot param-assignment
to:line::@return
line::@return: scope:[line] from line::@1
@ -836,8 +831,7 @@ line: scope:[line] from main::@1 main::@2
call plot param-assignment
to:line::@1
line::@1: scope:[line] from line
(byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
(byte) plot::x#1 ← (byte~) line::$1
(byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
call plot param-assignment
to:line::@return
line::@return: scope:[line] from line::@1
@ -893,8 +887,7 @@ line: scope:[line] from main::@1 main::@2
call plot param-assignment
to:line::@1
line::@1: scope:[line] from line
(byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
(byte) plot::x#1 ← (byte~) line::$1
(byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
call plot param-assignment
to:line::@return
line::@return: scope:[line] from line::@1
@ -947,8 +940,7 @@ line: scope:[line] from main::@1 main::@2
call plot param-assignment
to:line::@1
line::@1: scope:[line] from line
(byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
(byte) plot::x#1 ← (byte~) line::$1
(byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
call plot param-assignment
to:line::@return
line::@return: scope:[line] from line::@1
@ -970,14 +962,12 @@ Not aliassing across scopes: line::l#0 main::i#2
Not aliassing across scopes: line::l#1 main::j#2
Not aliassing across scopes: line::l#2 line::l#0
Not aliassing across scopes: plot::x#0 line::l#2
Not aliassing across scopes: plot::x#1 line::$1
Not aliassing across scopes: plot::x#2 plot::x#0
Multiple usages for variable. Not optimizing sub-constant (byte) line::l#2
Not aliassing across scopes: line::l#0 main::i#2
Not aliassing across scopes: line::l#1 main::j#2
Not aliassing across scopes: line::l#2 line::l#0
Not aliassing across scopes: plot::x#0 line::l#2
Not aliassing across scopes: plot::x#1 line::$1
Not aliassing across scopes: plot::x#2 plot::x#0
Multiple usages for variable. Not optimizing sub-constant (byte) line::l#2
Inlining constant with var siblings (const byte) main::i#0
@ -1019,8 +1009,7 @@ line: scope:[line] from main::@1 main::@2
call plot param-assignment
to:line::@1
line::@1: scope:[line] from line
(byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
(byte) plot::x#1 ← (byte~) line::$1
(byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
call plot param-assignment
to:line::@return
line::@return: scope:[line] from line::@1
@ -1045,7 +1034,6 @@ FINAL SYMBOL TABLE
(byte*) SCREEN
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) line((byte) line::l)
(byte~) line::$1
(label) line::@1
(label) line::@return
(byte) line::l
@ -1120,8 +1108,7 @@ line: scope:[line] from main::@1 main::@2
call plot param-assignment
to:line::@1
line::@1: scope:[line] from line
(byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
(byte) plot::x#1 ← (byte~) line::$1
(byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20
(byte~) plot::x#4 ← (byte) plot::x#1
call plot param-assignment
to:line::@return
@ -1143,7 +1130,7 @@ Adding NOP phi() at start of main
CALL GRAPH
Calls in [] to main:2
Calls in [main] to line:8 line:14
Calls in [line] to plot:23 plot:27
Calls in [line] to plot:23 plot:26
Propagating live ranges...
Propagating live ranges...
@ -1198,20 +1185,19 @@ line: scope:[line] from main::@1 main::@2
[23] call plot param-assignment [ line::l#2 ]
to:line::@1
line::@1: scope:[line] from line
[24] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ]
[25] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ]
[26] (byte~) plot::x#4 ← (byte) plot::x#1 [ plot::x#4 ]
[27] call plot param-assignment [ ]
[24] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ]
[25] (byte~) plot::x#4 ← (byte) plot::x#1 [ plot::x#4 ]
[26] call plot param-assignment [ ]
to:line::@return
line::@return: scope:[line] from line::@1
[28] return [ ]
[27] return [ ]
to:@return
plot: scope:[plot] from line line::@1
[29] (byte) plot::x#2 ← phi( line/(byte~) plot::x#3 line::@1/(byte~) plot::x#4 ) [ plot::x#2 ]
[30] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ]
[28] (byte) plot::x#2 ← phi( line/(byte~) plot::x#3 line::@1/(byte~) plot::x#4 ) [ plot::x#2 ]
[29] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ]
to:plot::@return
plot::@return: scope:[plot] from plot
[31] return [ ]
[30] return [ ]
to:@return
Created 4 initial phi equivalence classes
@ -1220,7 +1206,7 @@ Coalesced [13] line::l#5 ← line::l#1
Coalesced [18] main::j#4 ← main::j#1
Coalesced [19] main::i#4 ← main::i#1
Coalesced [22] plot::x#3 ← plot::x#0
Coalesced [26] plot::x#4 ← plot::x#1
Coalesced [25] plot::x#4 ← plot::x#1
Coalesced down to 4 phi equivalence classes
Culled Empty Block (label) main::@8
Culled Empty Block (label) main::@7
@ -1272,19 +1258,18 @@ line: scope:[line] from main::@1 main::@2
[18] call plot param-assignment [ line::l#2 ]
to:line::@1
line::@1: scope:[line] from line
[19] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ]
[20] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ]
[21] call plot param-assignment [ ]
[19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ]
[20] call plot param-assignment [ ]
to:line::@return
line::@return: scope:[line] from line::@1
[22] return [ ]
[21] return [ ]
to:@return
plot: scope:[plot] from line line::@1
[23] (byte) plot::x#2 ← phi( line/(byte) plot::x#0 line::@1/(byte) plot::x#1 ) [ plot::x#2 ]
[24] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ]
[22] (byte) plot::x#2 ← phi( line/(byte) plot::x#0 line::@1/(byte) plot::x#1 ) [ plot::x#2 ]
[23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ]
to:plot::@return
plot::@return: scope:[plot] from plot
[25] return [ ]
[24] return [ ]
to:@return
CONTROL FLOW GRAPH - PHI MEM COALESCED
@ -1327,19 +1312,18 @@ line: scope:[line] from main::@1 main::@2
[18] call plot param-assignment [ line::l#2 ] ( main:2::line:7 [ main::i#2 line::l#2 ] main:2::line:12 [ main::j#2 line::l#2 ] )
to:line::@1
line::@1: scope:[line] from line
[19] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:2::line:7 [ main::i#2 line::$1 ] main:2::line:12 [ main::j#2 line::$1 ] )
[20] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] )
[21] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
[19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] )
[20] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
to:line::@return
line::@return: scope:[line] from line::@1
[22] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
[21] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
to:@return
plot: scope:[plot] from line line::@1
[23] (byte) plot::x#2 ← phi( line/(byte) plot::x#0 line::@1/(byte) plot::x#1 ) [ plot::x#2 ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 plot::x#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 plot::x#2 ] main:2::line:7::plot:21 [ main::i#2 plot::x#2 ] main:2::line:12::plot:21 [ main::j#2 plot::x#2 ] )
[24] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] )
[22] (byte) plot::x#2 ← phi( line/(byte) plot::x#0 line::@1/(byte) plot::x#1 ) [ plot::x#2 ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 plot::x#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 plot::x#2 ] main:2::line:7::plot:20 [ main::i#2 plot::x#2 ] main:2::line:12::plot:20 [ main::j#2 plot::x#2 ] )
[23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] )
to:plot::@return
plot::@return: scope:[plot] from plot
[25] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] )
[24] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] )
to:@return
DOMINATORS
@ -1380,7 +1364,6 @@ Loop head: main::@2 tails: main::@6 blocks: main::@6 main::@2 depth: 1
VARIABLE REGISTER WEIGHTS
(byte*) SCREEN
(void()) line((byte) line::l)
(byte~) line::$1 4.0
(byte) line::l
(byte) line::l#0 22.0
(byte) line::l#1 22.0
@ -1403,18 +1386,15 @@ Initial phi equivalence classes
[ main::j#2 main::j#1 ]
[ line::l#2 line::l#0 line::l#1 ]
[ plot::x#2 plot::x#0 plot::x#1 ]
Added variable line::$1 to zero page equivalence class [ line::$1 ]
Complete equivalence classes
[ main::i#2 main::i#1 ]
[ main::j#2 main::j#1 ]
[ line::l#2 line::l#0 line::l#1 ]
[ plot::x#2 plot::x#0 plot::x#1 ]
[ line::$1 ]
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ]
Allocated zp ZP_BYTE:4 [ line::l#2 line::l#0 line::l#1 ]
Allocated zp ZP_BYTE:5 [ plot::x#2 plot::x#0 plot::x#1 ]
Allocated zp ZP_BYTE:6 [ line::$1 ]
INITIAL ASM
//SEG0 Basic Upstart
.pc = $801 "Basic"
@ -1508,74 +1488,69 @@ main: {
}
//SEG36 line
line: {
.label _1 = 6
.label l = 4
//SEG37 [17] (byte) plot::x#0 ← (byte) line::l#2 [ line::l#2 plot::x#0 ] ( main:2::line:7 [ main::i#2 line::l#2 plot::x#0 ] main:2::line:12 [ main::j#2 line::l#2 plot::x#0 ] ) -- vbuz1=vbuz2
lda l
sta plot.x
//SEG38 [18] call plot param-assignment [ line::l#2 ] ( main:2::line:7 [ main::i#2 line::l#2 ] main:2::line:12 [ main::j#2 line::l#2 ] )
//SEG39 [23] phi from line to plot [phi:line->plot]
//SEG39 [22] phi from line to plot [phi:line->plot]
plot_from_line:
//SEG40 [23] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy
//SEG40 [22] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy
jsr plot
jmp b1
//SEG41 line::@1
b1:
//SEG42 [19] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:2::line:7 [ main::i#2 line::$1 ] main:2::line:12 [ main::j#2 line::$1 ] ) -- vbuz1=vbuz2_plus_vbuc1
//SEG42 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) -- vbuz1=vbuz2_plus_vbuc1
lda l
clc
adc #$14
sta _1
//SEG43 [20] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) -- vbuz1=vbuz2
lda _1
sta plot.x
//SEG44 [21] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG45 [23] phi from line::@1 to plot [phi:line::@1->plot]
//SEG43 [20] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG44 [22] phi from line::@1 to plot [phi:line::@1->plot]
plot_from_b1:
//SEG46 [23] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy
//SEG45 [22] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy
jsr plot
jmp breturn
//SEG47 line::@return
//SEG46 line::@return
breturn:
//SEG48 [22] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG47 [21] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
rts
}
//SEG49 plot
//SEG48 plot
plot: {
.label x = 5
//SEG50 [24] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] ) -- vwuc1_derefidx_vbuz1=vbuc2
//SEG49 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) -- vwuc1_derefidx_vbuz1=vbuc2
lda #'*'
ldx x
sta SCREEN,x
jmp breturn
//SEG51 plot::@return
//SEG50 plot::@return
breturn:
//SEG52 [25] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] )
//SEG51 [24] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] )
rts
}
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [19] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:2::line:7 [ main::i#2 line::$1 ] main:2::line:12 [ main::j#2 line::$1 ] ) always clobbers reg byte a
Statement [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::j#2 main::j#1 ]
Statement [24] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] ) always clobbers reg byte a
Statement [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ line::l#2 line::l#0 line::l#1 ]
Statement [19] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:2::line:7 [ main::i#2 line::$1 ] main:2::line:12 [ main::j#2 line::$1 ] ) always clobbers reg byte a
Statement [24] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] ) always clobbers reg byte a
Statement [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) always clobbers reg byte a
Statement [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:3 [ main::j#2 main::j#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:4 [ line::l#2 line::l#0 line::l#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:5 [ plot::x#2 plot::x#0 plot::x#1 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:6 [ line::$1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [line] 52.67: zp ZP_BYTE:4 [ line::l#2 line::l#0 line::l#1 ] 4: zp ZP_BYTE:6 [ line::$1 ]
Uplift Scope [main] 27.5: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 27.5: zp ZP_BYTE:3 [ main::j#2 main::j#1 ]
Uplift Scope [line] 52.67: zp ZP_BYTE:4 [ line::l#2 line::l#0 line::l#1 ]
Uplift Scope [plot] 14: zp ZP_BYTE:5 [ plot::x#2 plot::x#0 plot::x#1 ]
Uplift Scope []
Uplifting [line] best 651 combination reg byte y [ line::l#2 line::l#0 line::l#1 ] reg byte a [ line::$1 ]
Uplifting [main] best 411 combination reg byte y [ main::i#2 main::i#1 ] reg byte y [ main::j#2 main::j#1 ]
Uplifting [main] best 475 combination reg byte y [ main::i#2 main::i#1 ] reg byte y [ main::j#2 main::j#1 ]
Uplifting [line] best 411 combination reg byte y [ line::l#2 line::l#0 line::l#1 ]
Uplifting [plot] best 406 combination reg byte a [ plot::x#2 plot::x#0 plot::x#1 ]
Uplifting [] best 406 combination
Removing instruction jmp b3
@ -1670,37 +1645,35 @@ line: {
//SEG37 [17] (byte) plot::x#0 ← (byte) line::l#2 [ line::l#2 plot::x#0 ] ( main:2::line:7 [ main::i#2 line::l#2 plot::x#0 ] main:2::line:12 [ main::j#2 line::l#2 plot::x#0 ] ) -- vbuaa=vbuyy
tya
//SEG38 [18] call plot param-assignment [ line::l#2 ] ( main:2::line:7 [ main::i#2 line::l#2 ] main:2::line:12 [ main::j#2 line::l#2 ] )
//SEG39 [23] phi from line to plot [phi:line->plot]
//SEG39 [22] phi from line to plot [phi:line->plot]
plot_from_line:
//SEG40 [23] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy
//SEG40 [22] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy
jsr plot
//SEG41 line::@1
b1:
//SEG42 [19] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:2::line:7 [ main::i#2 line::$1 ] main:2::line:12 [ main::j#2 line::$1 ] ) -- vbuaa=vbuyy_plus_vbuc1
//SEG42 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) -- vbuaa=vbuyy_plus_vbuc1
tya
clc
adc #$14
//SEG43 [20] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] )
// (byte) plot::x#1 = (byte~) line::$1 // register copy reg byte a
//SEG44 [21] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG45 [23] phi from line::@1 to plot [phi:line::@1->plot]
//SEG43 [20] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG44 [22] phi from line::@1 to plot [phi:line::@1->plot]
plot_from_b1:
//SEG46 [23] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy
//SEG45 [22] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy
jsr plot
//SEG47 line::@return
//SEG46 line::@return
breturn:
//SEG48 [22] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG47 [21] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
rts
}
//SEG49 plot
//SEG48 plot
plot: {
//SEG50 [24] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] ) -- vwuc1_derefidx_vbuaa=vbuc2
//SEG49 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) -- vwuc1_derefidx_vbuaa=vbuc2
tax
lda #'*'
sta SCREEN,x
//SEG51 plot::@return
//SEG50 plot::@return
breturn:
//SEG52 [25] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] )
//SEG51 [24] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] )
rts
}
@ -1788,37 +1761,35 @@ line: {
//SEG37 [17] (byte) plot::x#0 ← (byte) line::l#2 [ line::l#2 plot::x#0 ] ( main:2::line:7 [ main::i#2 line::l#2 plot::x#0 ] main:2::line:12 [ main::j#2 line::l#2 plot::x#0 ] ) -- vbuaa=vbuyy
tya
//SEG38 [18] call plot param-assignment [ line::l#2 ] ( main:2::line:7 [ main::i#2 line::l#2 ] main:2::line:12 [ main::j#2 line::l#2 ] )
//SEG39 [23] phi from line to plot [phi:line->plot]
//SEG39 [22] phi from line to plot [phi:line->plot]
plot_from_line:
//SEG40 [23] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy
//SEG40 [22] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy
jsr plot
//SEG41 line::@1
b1:
//SEG42 [19] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:2::line:7 [ main::i#2 line::$1 ] main:2::line:12 [ main::j#2 line::$1 ] ) -- vbuaa=vbuyy_plus_vbuc1
//SEG42 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) -- vbuaa=vbuyy_plus_vbuc1
tya
clc
adc #$14
//SEG43 [20] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] )
// (byte) plot::x#1 = (byte~) line::$1 // register copy reg byte a
//SEG44 [21] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG45 [23] phi from line::@1 to plot [phi:line::@1->plot]
//SEG43 [20] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG44 [22] phi from line::@1 to plot [phi:line::@1->plot]
plot_from_b1:
//SEG46 [23] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy
//SEG45 [22] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy
jsr plot
//SEG47 line::@return
//SEG46 line::@return
breturn:
//SEG48 [22] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG47 [21] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
rts
}
//SEG49 plot
//SEG48 plot
plot: {
//SEG50 [24] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] ) -- vwuc1_derefidx_vbuaa=vbuc2
//SEG49 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) -- vwuc1_derefidx_vbuaa=vbuc2
tax
lda #'*'
sta SCREEN,x
//SEG51 plot::@return
//SEG50 plot::@return
breturn:
//SEG52 [25] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] )
//SEG51 [24] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] )
rts
}
@ -1903,32 +1874,30 @@ line: {
//SEG37 [17] (byte) plot::x#0 ← (byte) line::l#2 [ line::l#2 plot::x#0 ] ( main:2::line:7 [ main::i#2 line::l#2 plot::x#0 ] main:2::line:12 [ main::j#2 line::l#2 plot::x#0 ] ) -- vbuaa=vbuyy
tya
//SEG38 [18] call plot param-assignment [ line::l#2 ] ( main:2::line:7 [ main::i#2 line::l#2 ] main:2::line:12 [ main::j#2 line::l#2 ] )
//SEG39 [23] phi from line to plot [phi:line->plot]
//SEG40 [23] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy
//SEG39 [22] phi from line to plot [phi:line->plot]
//SEG40 [22] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy
jsr plot
//SEG41 line::@1
//SEG42 [19] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:2::line:7 [ main::i#2 line::$1 ] main:2::line:12 [ main::j#2 line::$1 ] ) -- vbuaa=vbuyy_plus_vbuc1
//SEG42 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) -- vbuaa=vbuyy_plus_vbuc1
tya
clc
adc #$14
//SEG43 [20] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] )
// (byte) plot::x#1 = (byte~) line::$1 // register copy reg byte a
//SEG44 [21] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG45 [23] phi from line::@1 to plot [phi:line::@1->plot]
//SEG46 [23] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy
//SEG43 [20] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG44 [22] phi from line::@1 to plot [phi:line::@1->plot]
//SEG45 [22] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy
jsr plot
//SEG47 line::@return
//SEG48 [22] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG46 line::@return
//SEG47 [21] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
rts
}
//SEG49 plot
//SEG48 plot
plot: {
//SEG50 [24] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] ) -- vwuc1_derefidx_vbuaa=vbuc2
//SEG49 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) -- vwuc1_derefidx_vbuaa=vbuc2
tax
lda #'*'
sta SCREEN,x
//SEG51 plot::@return
//SEG52 [25] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] )
//SEG50 plot::@return
//SEG51 [24] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] )
rts
}
@ -1999,32 +1968,30 @@ line: {
//SEG37 [17] (byte) plot::x#0 ← (byte) line::l#2 [ line::l#2 plot::x#0 ] ( main:2::line:7 [ main::i#2 line::l#2 plot::x#0 ] main:2::line:12 [ main::j#2 line::l#2 plot::x#0 ] ) -- vbuaa=vbuyy
tya
//SEG38 [18] call plot param-assignment [ line::l#2 ] ( main:2::line:7 [ main::i#2 line::l#2 ] main:2::line:12 [ main::j#2 line::l#2 ] )
//SEG39 [23] phi from line to plot [phi:line->plot]
//SEG40 [23] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy
//SEG39 [22] phi from line to plot [phi:line->plot]
//SEG40 [22] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy
jsr plot
//SEG41 line::@1
//SEG42 [19] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:2::line:7 [ main::i#2 line::$1 ] main:2::line:12 [ main::j#2 line::$1 ] ) -- vbuaa=vbuyy_plus_vbuc1
//SEG42 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) -- vbuaa=vbuyy_plus_vbuc1
tya
clc
adc #$14
//SEG43 [20] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] )
// (byte) plot::x#1 = (byte~) line::$1 // register copy reg byte a
//SEG44 [21] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG45 [23] phi from line::@1 to plot [phi:line::@1->plot]
//SEG46 [23] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy
//SEG43 [20] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG44 [22] phi from line::@1 to plot [phi:line::@1->plot]
//SEG45 [22] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy
jsr plot
//SEG47 line::@return
//SEG48 [22] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG46 line::@return
//SEG47 [21] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
rts
}
//SEG49 plot
//SEG48 plot
plot: {
//SEG50 [24] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] ) -- vwuc1_derefidx_vbuaa=vbuc2
//SEG49 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) -- vwuc1_derefidx_vbuaa=vbuc2
tax
lda #'*'
sta SCREEN,x
//SEG51 plot::@return
//SEG52 [25] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] )
//SEG50 plot::@return
//SEG51 [24] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] )
rts
}
@ -2035,7 +2002,6 @@ FINAL SYMBOL TABLE
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) line((byte) line::l)
(byte~) line::$1 reg byte a 4.0
(label) line::@1
(label) line::@return
(byte) line::l
@ -2065,7 +2031,6 @@ reg byte y [ main::i#2 main::i#1 ]
reg byte y [ main::j#2 main::j#1 ]
reg byte y [ line::l#2 line::l#0 line::l#1 ]
reg byte a [ plot::x#2 plot::x#0 plot::x#1 ]
reg byte a [ line::$1 ]
FINAL CODE
//SEG0 Basic Upstart
@ -2131,32 +2096,30 @@ line: {
//SEG37 [17] (byte) plot::x#0 ← (byte) line::l#2 [ line::l#2 plot::x#0 ] ( main:2::line:7 [ main::i#2 line::l#2 plot::x#0 ] main:2::line:12 [ main::j#2 line::l#2 plot::x#0 ] ) -- vbuaa=vbuyy
tya
//SEG38 [18] call plot param-assignment [ line::l#2 ] ( main:2::line:7 [ main::i#2 line::l#2 ] main:2::line:12 [ main::j#2 line::l#2 ] )
//SEG39 [23] phi from line to plot [phi:line->plot]
//SEG40 [23] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy
//SEG39 [22] phi from line to plot [phi:line->plot]
//SEG40 [22] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy
jsr plot
//SEG41 line::@1
//SEG42 [19] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:2::line:7 [ main::i#2 line::$1 ] main:2::line:12 [ main::j#2 line::$1 ] ) -- vbuaa=vbuyy_plus_vbuc1
//SEG42 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) -- vbuaa=vbuyy_plus_vbuc1
tya
clc
adc #$14
//SEG43 [20] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] )
// (byte) plot::x#1 = (byte~) line::$1 // register copy reg byte a
//SEG44 [21] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG45 [23] phi from line::@1 to plot [phi:line::@1->plot]
//SEG46 [23] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy
//SEG43 [20] call plot param-assignment [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG44 [22] phi from line::@1 to plot [phi:line::@1->plot]
//SEG45 [22] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy
jsr plot
//SEG47 line::@return
//SEG48 [22] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
//SEG46 line::@return
//SEG47 [21] return [ ] ( main:2::line:7 [ main::i#2 ] main:2::line:12 [ main::j#2 ] )
rts
}
//SEG49 plot
//SEG48 plot
plot: {
//SEG50 [24] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] ) -- vwuc1_derefidx_vbuaa=vbuc2
//SEG49 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) -- vwuc1_derefidx_vbuaa=vbuc2
tax
lda #'*'
sta SCREEN,x
//SEG51 plot::@return
//SEG52 [25] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:21 [ main::i#2 ] main:2::line:12::plot:21 [ main::j#2 ] )
//SEG50 plot::@return
//SEG51 [24] return [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] )
rts
}

View File

@ -4,7 +4,6 @@
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) line((byte) line::l)
(byte~) line::$1 reg byte a 4.0
(label) line::@1
(label) line::@return
(byte) line::l
@ -34,4 +33,3 @@ reg byte y [ main::i#2 main::i#1 ]
reg byte y [ main::j#2 main::j#1 ]
reg byte y [ line::l#2 line::l#0 line::l#1 ]
reg byte a [ plot::x#2 plot::x#0 plot::x#1 ]
reg byte a [ line::$1 ]

View File

@ -9,23 +9,23 @@
[3] phi() [ ] ( )
main: scope:[main] from @2
[4] phi() [ ] ( main:2 [ ] )
[5] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
[5] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
to:main::@1
main::@1: scope:[main] from main
[6] (byte) char#2 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] )
[7] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
[6] (byte) char#2 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] )
[7] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
to:main::@2
main::@2: scope:[main] from main::@1
[8] (byte) char#4 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] )
[8] (byte) char#4 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] )
[9] call ln param-assignment [ ] ( main:2 [ ] )
to:main::@return
main::@return: scope:[main] from main::@2
[10] return [ ] ( main:2 [ ] )
to:@return
ln: scope:[ln] from main main::@1 main::@2
[11] (byte) line#12 ← phi( main/(byte/signed byte/word/signed word) 64 main::@1/(byte~) ln::$0 main::@2/(byte~) ln::$0 ) [ line#12 ] ( main:2::ln:5 [ line#12 ] main:2::ln:7 [ line#12 ] main:2::ln:9 [ line#12 ] )
[12] (byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] )
[11] (byte) line#12 ← phi( main/(byte/signed byte/word/signed word) 64 main::@1/(byte) line#13 main::@2/(byte) line#13 ) [ line#12 ] ( main:2::ln:5 [ line#12 ] main:2::ln:7 [ line#12 ] main:2::ln:9 [ line#12 ] )
[12] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] )
to:ln::@return
ln::@return: scope:[ln] from ln
[13] return [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] )
[13] return [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] )
to:@return

View File

@ -363,118 +363,50 @@ Not aliassing across scopes: char#11 char#8
Not aliassing across scopes: line#10 line#6
Not aliassing across scopes: char#12 char#8
Not aliassing across scopes: line#12 line#15
Not aliassing across scopes: line#5 ln::$0
Not aliassing across scopes: line#14 line#4
Not aliassing across scopes: char#15 char#6
Alias candidate removed (byte) char#0
Alias candidate removed (byte) char#7
Alias (byte) char#17 = (byte) line#0 (byte) line#16
Alias (byte) line#0 = (byte) char#0 (byte) line#16 (byte) char#17
Alias (byte) line#1 = (byte) line#8
Alias (byte) char#1 = (byte) char#10
Alias (byte) line#2 = (byte) line#9
Alias (byte) char#11 = (byte) char#3
Alias (byte) line#10 = (byte) line#3 (byte) line#11 (byte) line#4
Alias (byte) char#12 = (byte) char#5 (byte) char#13 (byte) char#6
Alias (byte) char#14 = (byte) line#5 (byte) line#13 (byte) line#6 (byte) char#8
Alias (byte) line#13 = (byte) line#5 (byte~) ln::$0 (byte) char#7 (byte) char#14 (byte) line#6 (byte) char#8
Alias (byte) line#14 = (byte) line#7
Alias (byte) char#15 = (byte) char#9
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte) char#17 ← (byte/signed byte/word/signed word) 64
(byte) char#0 ← (byte) char#17
(byte) line#0 ← (byte/signed byte/word/signed word) 64
to:@2
main: scope:[main] from @2
(byte) char#16 ← phi( @2/(byte) char#17 )
(byte) line#15 ← phi( @2/(byte) char#17 )
(byte) char#16 ← phi( @2/(byte) line#0 )
(byte) line#15 ← phi( @2/(byte) line#0 )
call ln param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte) char#1 ← phi( main/(byte) char#14 )
(byte) line#1 ← phi( main/(byte) char#14 )
(byte) char#1 ← phi( main/(byte) line#13 )
(byte) line#1 ← phi( main/(byte) line#13 )
(byte) char#2 ← ++ (byte) char#1
call ln param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
(byte) char#11 ← phi( main::@1/(byte) char#14 )
(byte) line#2 ← phi( main::@1/(byte) char#14 )
(byte) char#11 ← phi( main::@1/(byte) line#13 )
(byte) line#2 ← phi( main::@1/(byte) line#13 )
(byte) char#4 ← ++ (byte) char#11
call ln param-assignment
to:main::@3
main::@3: scope:[main] from main::@2
(byte) char#12 ← phi( main::@2/(byte) char#14 )
(byte) line#10 ← phi( main::@2/(byte) char#14 )
(byte) char#12 ← phi( main::@2/(byte) line#13 )
(byte) line#10 ← phi( main::@2/(byte) line#13 )
to:main::@return
main::@return: scope:[main] from main::@3
return
to:@return
ln: scope:[ln] from main main::@1 main::@2
(byte) line#12 ← phi( main/(byte) line#15 main::@1/(byte) line#1 main::@2/(byte) line#2 )
(byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2
(byte) char#14 ← (byte~) ln::$0
(byte) char#7 ← (byte) char#14
to:ln::@return
ln::@return: scope:[ln] from ln
(byte) char#14 ← phi( ln/(byte) char#7 )
return
to:@return
@2: scope:[] from @begin
(byte) char#17 ← phi( @begin/(byte) char#0 )
call main param-assignment
to:@3
@3: scope:[] from @2
(byte) char#15 ← phi( @2/(byte) char#12 )
(byte) line#14 ← phi( @2/(byte) line#10 )
to:@end
@end: scope:[] from @3
Not aliassing across scopes: line#15 char#17
Not aliassing across scopes: char#16 char#17
Not aliassing across scopes: line#1 char#14
Not aliassing across scopes: char#1 char#14
Not aliassing across scopes: line#2 char#14
Not aliassing across scopes: char#11 char#14
Not aliassing across scopes: line#10 char#14
Not aliassing across scopes: char#12 char#14
Not aliassing across scopes: line#12 line#15
Not aliassing across scopes: char#14 ln::$0
Not aliassing across scopes: line#14 line#10
Not aliassing across scopes: char#15 char#12
Alias (byte) char#0 = (byte) char#17
Alias (byte) char#14 = (byte) char#7
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte) char#0 ← (byte/signed byte/word/signed word) 64
to:@2
main: scope:[main] from @2
(byte) char#16 ← phi( @2/(byte) char#0 )
(byte) line#15 ← phi( @2/(byte) char#0 )
call ln param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte) char#1 ← phi( main/(byte) char#14 )
(byte) line#1 ← phi( main/(byte) char#14 )
(byte) char#2 ← ++ (byte) char#1
call ln param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
(byte) char#11 ← phi( main::@1/(byte) char#14 )
(byte) line#2 ← phi( main::@1/(byte) char#14 )
(byte) char#4 ← ++ (byte) char#11
call ln param-assignment
to:main::@3
main::@3: scope:[main] from main::@2
(byte) char#12 ← phi( main::@2/(byte) char#14 )
(byte) line#10 ← phi( main::@2/(byte) char#14 )
to:main::@return
main::@return: scope:[main] from main::@3
return
to:@return
ln: scope:[ln] from main main::@1 main::@2
(byte) line#12 ← phi( main/(byte) line#15 main::@1/(byte) line#1 main::@2/(byte) line#2 )
(byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2
(byte) char#14 ← (byte~) ln::$0
(byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2
to:ln::@return
ln::@return: scope:[ln] from ln
return
@ -488,42 +420,41 @@ ln::@return: scope:[ln] from ln
to:@end
@end: scope:[] from @3
Not aliassing across scopes: line#15 char#0
Not aliassing across scopes: char#16 char#0
Not aliassing across scopes: line#1 char#14
Not aliassing across scopes: char#1 char#14
Not aliassing across scopes: line#2 char#14
Not aliassing across scopes: char#11 char#14
Not aliassing across scopes: line#10 char#14
Not aliassing across scopes: char#12 char#14
Not aliassing across scopes: line#15 line#0
Not aliassing across scopes: char#16 line#0
Not aliassing across scopes: line#1 line#13
Not aliassing across scopes: char#1 line#13
Not aliassing across scopes: line#2 line#13
Not aliassing across scopes: char#11 line#13
Not aliassing across scopes: line#10 line#13
Not aliassing across scopes: char#12 line#13
Not aliassing across scopes: line#12 line#15
Not aliassing across scopes: char#14 ln::$0
Not aliassing across scopes: line#14 line#10
Not aliassing across scopes: char#15 char#12
Redundant Phi (byte) line#15 (byte) char#0
Redundant Phi (byte) char#16 (byte) char#0
Redundant Phi (byte) line#1 (byte) char#14
Redundant Phi (byte) char#1 (byte) char#14
Redundant Phi (byte) line#2 (byte) char#14
Redundant Phi (byte) char#11 (byte) char#14
Redundant Phi (byte) line#10 (byte) char#14
Redundant Phi (byte) char#12 (byte) char#14
Redundant Phi (byte) line#15 (byte) line#0
Redundant Phi (byte) char#16 (byte) line#0
Redundant Phi (byte) line#1 (byte) line#13
Redundant Phi (byte) char#1 (byte) line#13
Redundant Phi (byte) line#2 (byte) line#13
Redundant Phi (byte) char#11 (byte) line#13
Redundant Phi (byte) line#10 (byte) line#13
Redundant Phi (byte) char#12 (byte) line#13
Redundant Phi (byte) line#14 (byte) line#10
Redundant Phi (byte) char#15 (byte) char#12
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte) char#0 ← (byte/signed byte/word/signed word) 64
(byte) line#0 ← (byte/signed byte/word/signed word) 64
to:@2
main: scope:[main] from @2
call ln param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte) char#2 ← ++ (byte) char#14
(byte) char#2 ← ++ (byte) line#13
call ln param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
(byte) char#4 ← ++ (byte) char#14
(byte) char#4 ← ++ (byte) line#13
call ln param-assignment
to:main::@3
main::@3: scope:[main] from main::@2
@ -532,9 +463,8 @@ main::@return: scope:[main] from main::@3
return
to:@return
ln: scope:[ln] from main main::@1 main::@2
(byte) line#12 ← phi( main/(byte) char#0 main::@1/(byte) char#14 main::@2/(byte) char#14 )
(byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2
(byte) char#14 ← (byte~) ln::$0
(byte) line#12 ← phi( main/(byte) line#0 main::@1/(byte) line#13 main::@2/(byte) line#13 )
(byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2
to:ln::@return
ln::@return: scope:[ln] from ln
return
@ -546,7 +476,7 @@ ln::@return: scope:[ln] from ln
to:@end
@end: scope:[] from @3
Constant (const byte) char#0 = 64
Constant (const byte) line#0 = 64
Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -555,11 +485,11 @@ main: scope:[main] from @2
call ln param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte) char#2 ← ++ (byte) char#14
(byte) char#2 ← ++ (byte) line#13
call ln param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
(byte) char#4 ← ++ (byte) char#14
(byte) char#4 ← ++ (byte) line#13
call ln param-assignment
to:main::@3
main::@3: scope:[main] from main::@2
@ -568,9 +498,8 @@ main::@return: scope:[main] from main::@3
return
to:@return
ln: scope:[ln] from main main::@1 main::@2
(byte) line#12 ← phi( main/(const byte) char#0 main::@1/(byte) char#14 main::@2/(byte) char#14 )
(byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2
(byte) char#14 ← (byte~) ln::$0
(byte) line#12 ← phi( main/(const byte) line#0 main::@1/(byte) line#13 main::@2/(byte) line#13 )
(byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2
to:ln::@return
ln::@return: scope:[ln] from ln
return
@ -592,20 +521,19 @@ main: scope:[main] from @2
call ln param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte) char#2 ← ++ (byte) char#14
(byte) char#2 ← ++ (byte) line#13
call ln param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
(byte) char#4 ← ++ (byte) char#14
(byte) char#4 ← ++ (byte) line#13
call ln param-assignment
to:main::@return
main::@return: scope:[main] from main::@2
return
to:@return
ln: scope:[ln] from main main::@1 main::@2
(byte) line#12 ← phi( main/(const byte) char#0 main::@1/(byte) char#14 main::@2/(byte) char#14 )
(byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2
(byte) char#14 ← (byte~) ln::$0
(byte) line#12 ← phi( main/(const byte) line#0 main::@1/(byte) line#13 main::@2/(byte) line#13 )
(byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2
to:ln::@return
ln::@return: scope:[ln] from ln
return
@ -615,12 +543,9 @@ ln::@return: scope:[ln] from ln
to:@end
@end: scope:[] from @2
Not aliassing across scopes: char#14 ln::$0
Not aliassing across scopes: char#14 ln::$0
Inlining constant with var siblings (const byte) char#0
Inlining constant with var siblings (const byte) char#0
Inlining constant with var siblings (const byte) char#0
Constant inlined char#0 = (byte/signed byte/word/signed word) 64
Inlining constant with var siblings (const byte) line#0
Inlining constant with var siblings (const byte) line#0
Constant inlined line#0 = (byte/signed byte/word/signed word) 64
Succesful SSA optimization Pass2ConstantInlining
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -629,20 +554,19 @@ main: scope:[main] from @2
call ln param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte) char#2 ← ++ (byte) char#14
(byte) char#2 ← ++ (byte) line#13
call ln param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
(byte) char#4 ← ++ (byte) char#14
(byte) char#4 ← ++ (byte) line#13
call ln param-assignment
to:main::@return
main::@return: scope:[main] from main::@2
return
to:@return
ln: scope:[ln] from main main::@1 main::@2
(byte) line#12 ← phi( main/(byte/signed byte/word/signed word) 64 main::@1/(byte) char#14 main::@2/(byte) char#14 )
(byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2
(byte) char#14 ← (byte~) ln::$0
(byte) line#12 ← phi( main/(byte/signed byte/word/signed word) 64 main::@1/(byte) line#13 main::@2/(byte) line#13 )
(byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2
to:ln::@return
ln::@return: scope:[ln] from ln
return
@ -657,13 +581,12 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte) char
(byte) char#14
(byte) char#2
(byte) char#4
(byte) line
(byte) line#12
(byte) line#13
(void()) ln()
(byte~) ln::$0
(label) ln::@return
(void()) main()
(label) main::@1
@ -683,22 +606,21 @@ main: scope:[main] from @2
call ln param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte) char#2 ← ++ (byte) char#14
(byte~) char#18 ← (byte) char#14
(byte) char#2 ← ++ (byte) line#13
(byte~) line#17 ← (byte) line#13
call ln param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
(byte) char#4 ← ++ (byte) char#14
(byte~) char#19 ← (byte) char#14
(byte) char#4 ← ++ (byte) line#13
(byte~) line#18 ← (byte) line#13
call ln param-assignment
to:main::@return
main::@return: scope:[main] from main::@2
return
to:@return
ln: scope:[ln] from main main::@1 main::@2
(byte) line#12 ← phi( main/(byte/signed byte/word/signed word) 64 main::@1/(byte~) char#18 main::@2/(byte~) char#19 )
(byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2
(byte) char#14 ← (byte~) ln::$0
(byte) line#12 ← phi( main/(byte/signed byte/word/signed word) 64 main::@1/(byte~) line#17 main::@2/(byte~) line#18 )
(byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2
to:ln::@return
ln::@return: scope:[ln] from ln
return
@ -727,34 +649,32 @@ CONTROL FLOW GRAPH - LIVE RANGES FOUND
[3] phi() [ ]
main: scope:[main] from @2
[4] phi() [ ]
[5] call ln param-assignment [ char#14 ]
[5] call ln param-assignment [ line#13 ]
to:main::@1
main::@1: scope:[main] from main
[6] (byte) char#2 ← ++ (byte) char#14 [ char#14 ]
[7] (byte~) char#18 ← (byte) char#14 [ char#18 ]
[8] call ln param-assignment [ char#14 ]
[6] (byte) char#2 ← ++ (byte) line#13 [ line#13 ]
[7] (byte~) line#17 ← (byte) line#13 [ line#17 ]
[8] call ln param-assignment [ line#13 ]
to:main::@2
main::@2: scope:[main] from main::@1
[9] (byte) char#4 ← ++ (byte) char#14 [ char#14 ]
[10] (byte~) char#19 ← (byte) char#14 [ char#19 ]
[9] (byte) char#4 ← ++ (byte) line#13 [ line#13 ]
[10] (byte~) line#18 ← (byte) line#13 [ line#18 ]
[11] call ln param-assignment [ ]
to:main::@return
main::@return: scope:[main] from main::@2
[12] return [ ]
to:@return
ln: scope:[ln] from main main::@1 main::@2
[13] (byte) line#12 ← phi( main/(byte/signed byte/word/signed word) 64 main::@1/(byte~) char#18 main::@2/(byte~) char#19 ) [ line#12 ]
[14] (byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ ln::$0 ]
[15] (byte) char#14 ← (byte~) ln::$0 [ char#14 ]
[13] (byte) line#12 ← phi( main/(byte/signed byte/word/signed word) 64 main::@1/(byte~) line#17 main::@2/(byte~) line#18 ) [ line#12 ]
[14] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ line#13 ]
to:ln::@return
ln::@return: scope:[ln] from ln
[16] return [ char#14 ]
[15] return [ line#13 ]
to:@return
Created 1 initial phi equivalence classes
Coalesced [7] char#18 ← char#14
Coalesced (already) [10] char#19 ← char#14
Coalesced [15] char#14 ← ln::$0
Coalesced [7] line#17 ← line#13
Coalesced (already) [10] line#18 ← line#13
Coalesced down to 1 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return ln ln::@return
Adding NOP phi() at start of @begin
@ -776,25 +696,25 @@ CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES
[3] phi() [ ]
main: scope:[main] from @2
[4] phi() [ ]
[5] call ln param-assignment [ ln::$0 ]
[5] call ln param-assignment [ line#13 ]
to:main::@1
main::@1: scope:[main] from main
[6] (byte) char#2 ← ++ (byte~) ln::$0 [ ln::$0 ]
[7] call ln param-assignment [ ln::$0 ]
[6] (byte) char#2 ← ++ (byte) line#13 [ line#13 ]
[7] call ln param-assignment [ line#13 ]
to:main::@2
main::@2: scope:[main] from main::@1
[8] (byte) char#4 ← ++ (byte~) ln::$0 [ ln::$0 ]
[8] (byte) char#4 ← ++ (byte) line#13 [ line#13 ]
[9] call ln param-assignment [ ]
to:main::@return
main::@return: scope:[main] from main::@2
[10] return [ ]
to:@return
ln: scope:[ln] from main main::@1 main::@2
[11] (byte) line#12 ← phi( main/(byte/signed byte/word/signed word) 64 main::@1/(byte~) ln::$0 main::@2/(byte~) ln::$0 ) [ line#12 ]
[12] (byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ ln::$0 ]
[11] (byte) line#12 ← phi( main/(byte/signed byte/word/signed word) 64 main::@1/(byte) line#13 main::@2/(byte) line#13 ) [ line#12 ]
[12] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ line#13 ]
to:ln::@return
ln::@return: scope:[ln] from ln
[13] return [ ln::$0 ]
[13] return [ line#13 ]
to:@return
CONTROL FLOW GRAPH - PHI MEM COALESCED
@ -809,25 +729,25 @@ CONTROL FLOW GRAPH - PHI MEM COALESCED
[3] phi() [ ] ( )
main: scope:[main] from @2
[4] phi() [ ] ( main:2 [ ] )
[5] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
[5] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
to:main::@1
main::@1: scope:[main] from main
[6] (byte) char#2 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] )
[7] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
[6] (byte) char#2 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] )
[7] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
to:main::@2
main::@2: scope:[main] from main::@1
[8] (byte) char#4 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] )
[8] (byte) char#4 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] )
[9] call ln param-assignment [ ] ( main:2 [ ] )
to:main::@return
main::@return: scope:[main] from main::@2
[10] return [ ] ( main:2 [ ] )
to:@return
ln: scope:[ln] from main main::@1 main::@2
[11] (byte) line#12 ← phi( main/(byte/signed byte/word/signed word) 64 main::@1/(byte~) ln::$0 main::@2/(byte~) ln::$0 ) [ line#12 ] ( main:2::ln:5 [ line#12 ] main:2::ln:7 [ line#12 ] main:2::ln:9 [ line#12 ] )
[12] (byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] )
[11] (byte) line#12 ← phi( main/(byte/signed byte/word/signed word) 64 main::@1/(byte) line#13 main::@2/(byte) line#13 ) [ line#12 ] ( main:2::ln:5 [ line#12 ] main:2::ln:7 [ line#12 ] main:2::ln:9 [ line#12 ] )
[12] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] )
to:ln::@return
ln::@return: scope:[ln] from ln
[13] return [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] )
[13] return [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] )
to:@return
DOMINATORS
@ -855,19 +775,19 @@ VARIABLE REGISTER WEIGHTS
(byte) char#4 20.0
(byte) line
(byte) line#12 6.0
(byte) line#13 1.6666666666666665
(void()) ln()
(byte~) ln::$0 1.6666666666666665
(void()) main()
Initial phi equivalence classes
[ line#12 ln::$0 ]
[ line#12 line#13 ]
Added variable char#2 to zero page equivalence class [ char#2 ]
Added variable char#4 to zero page equivalence class [ char#4 ]
Complete equivalence classes
[ line#12 ln::$0 ]
[ line#12 line#13 ]
[ char#2 ]
[ char#4 ]
Allocated zp ZP_BYTE:2 [ line#12 ln::$0 ]
Allocated zp ZP_BYTE:2 [ line#12 line#13 ]
Allocated zp ZP_BYTE:3 [ char#2 ]
Allocated zp ZP_BYTE:4 [ char#4 ]
INITIAL ASM
@ -897,7 +817,7 @@ bend_from_b2:
bend:
//SEG9 main
main: {
//SEG10 [5] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
//SEG10 [5] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
//SEG11 [11] phi from main to ln [phi:main->ln]
ln_from_main:
//SEG12 [11] phi (byte) line#12 = (byte/signed byte/word/signed word) 64 [phi:main->ln#0] -- vbuz1=vbuc1
@ -907,26 +827,26 @@ main: {
jmp b1
//SEG13 main::@1
b1:
//SEG14 [6] (byte) char#2 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] ) -- vbuz1=_inc_vbuz2
lda ln._0
//SEG14 [6] (byte) char#2 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] ) -- vbuz1=_inc_vbuz2
lda line
sta char
inc char
//SEG15 [7] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
//SEG15 [7] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
//SEG16 [11] phi from main::@1 to ln [phi:main::@1->ln]
ln_from_b1:
//SEG17 [11] phi (byte) line#12 = (byte~) ln::$0 [phi:main::@1->ln#0] -- register_copy
//SEG17 [11] phi (byte) line#12 = (byte) line#13 [phi:main::@1->ln#0] -- register_copy
jsr ln
jmp b2
//SEG18 main::@2
b2:
//SEG19 [8] (byte) char#4 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] ) -- vbuz1=_inc_vbuz2
lda ln._0
//SEG19 [8] (byte) char#4 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] ) -- vbuz1=_inc_vbuz2
lda line
sta char_4
inc char_4
//SEG20 [9] call ln param-assignment [ ] ( main:2 [ ] )
//SEG21 [11] phi from main::@2 to ln [phi:main::@2->ln]
ln_from_b2:
//SEG22 [11] phi (byte) line#12 = (byte~) ln::$0 [phi:main::@2->ln#0] -- register_copy
//SEG22 [11] phi (byte) line#12 = (byte) line#13 [phi:main::@2->ln#0] -- register_copy
jsr ln
jmp breturn
//SEG23 main::@return
@ -936,31 +856,30 @@ main: {
}
//SEG25 ln
ln: {
.label _0 = 2
//SEG26 [12] (byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] ) -- vbuz1=vbuz1_plus_vbuc1
lda _0
//SEG26 [12] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] ) -- vbuz1=vbuz1_plus_vbuc1
lda line
clc
adc #2
sta _0
sta line
jmp breturn
//SEG27 ln::@return
breturn:
//SEG28 [13] return [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] )
//SEG28 [13] return [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] )
rts
}
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [12] (byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ line#12 ln::$0 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
Statement [12] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ line#12 line#13 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:3 [ char#2 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:4 [ char#4 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [] 20: zp ZP_BYTE:3 [ char#2 ] 20: zp ZP_BYTE:4 [ char#4 ] 7.67: zp ZP_BYTE:2 [ line#12 ln::$0 ]
Uplift Scope [] 20: zp ZP_BYTE:3 [ char#2 ] 20: zp ZP_BYTE:4 [ char#4 ] 7.67: zp ZP_BYTE:2 [ line#12 line#13 ]
Uplift Scope [main]
Uplift Scope [ln]
Uplifting [] best 76 combination zp ZP_BYTE:3 [ char#2 ] zp ZP_BYTE:4 [ char#4 ] reg byte a [ line#12 ln::$0 ]
Uplifting [] best 76 combination zp ZP_BYTE:3 [ char#2 ] zp ZP_BYTE:4 [ char#4 ] reg byte a [ line#12 line#13 ]
Uplifting [main] best 76 combination
Uplifting [ln] best 76 combination
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ char#2 ]
@ -999,7 +918,7 @@ bend_from_b2:
bend:
//SEG9 main
main: {
//SEG10 [5] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
//SEG10 [5] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
//SEG11 [11] phi from main to ln [phi:main->ln]
ln_from_main:
//SEG12 [11] phi (byte) line#12 = (byte/signed byte/word/signed word) 64 [phi:main->ln#0] -- vbuaa=vbuc1
@ -1007,23 +926,23 @@ main: {
jsr ln
//SEG13 main::@1
b1:
//SEG14 [6] (byte) char#2 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] ) -- vbuz1=_inc_vbuaa
//SEG14 [6] (byte) char#2 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] ) -- vbuz1=_inc_vbuaa
sta char
inc char
//SEG15 [7] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
//SEG15 [7] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
//SEG16 [11] phi from main::@1 to ln [phi:main::@1->ln]
ln_from_b1:
//SEG17 [11] phi (byte) line#12 = (byte~) ln::$0 [phi:main::@1->ln#0] -- register_copy
//SEG17 [11] phi (byte) line#12 = (byte) line#13 [phi:main::@1->ln#0] -- register_copy
jsr ln
//SEG18 main::@2
b2:
//SEG19 [8] (byte) char#4 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] ) -- vbuz1=_inc_vbuaa
//SEG19 [8] (byte) char#4 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] ) -- vbuz1=_inc_vbuaa
sta char
inc char
//SEG20 [9] call ln param-assignment [ ] ( main:2 [ ] )
//SEG21 [11] phi from main::@2 to ln [phi:main::@2->ln]
ln_from_b2:
//SEG22 [11] phi (byte) line#12 = (byte~) ln::$0 [phi:main::@2->ln#0] -- register_copy
//SEG22 [11] phi (byte) line#12 = (byte) line#13 [phi:main::@2->ln#0] -- register_copy
jsr ln
//SEG23 main::@return
breturn:
@ -1032,12 +951,12 @@ main: {
}
//SEG25 ln
ln: {
//SEG26 [12] (byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] ) -- vbuaa=vbuaa_plus_vbuc1
//SEG26 [12] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] ) -- vbuaa=vbuaa_plus_vbuc1
clc
adc #2
//SEG27 ln::@return
breturn:
//SEG28 [13] return [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] )
//SEG28 [13] return [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] )
rts
}
@ -1065,7 +984,7 @@ b2:
bend:
//SEG9 main
main: {
//SEG10 [5] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
//SEG10 [5] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
//SEG11 [11] phi from main to ln [phi:main->ln]
ln_from_main:
//SEG12 [11] phi (byte) line#12 = (byte/signed byte/word/signed word) 64 [phi:main->ln#0] -- vbuaa=vbuc1
@ -1073,23 +992,23 @@ main: {
jsr ln
//SEG13 main::@1
b1:
//SEG14 [6] (byte) char#2 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] ) -- vbuz1=_inc_vbuaa
//SEG14 [6] (byte) char#2 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] ) -- vbuz1=_inc_vbuaa
sta char
inc char
//SEG15 [7] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
//SEG15 [7] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
//SEG16 [11] phi from main::@1 to ln [phi:main::@1->ln]
ln_from_b1:
//SEG17 [11] phi (byte) line#12 = (byte~) ln::$0 [phi:main::@1->ln#0] -- register_copy
//SEG17 [11] phi (byte) line#12 = (byte) line#13 [phi:main::@1->ln#0] -- register_copy
jsr ln
//SEG18 main::@2
b2:
//SEG19 [8] (byte) char#4 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] ) -- vbuz1=_inc_vbuaa
//SEG19 [8] (byte) char#4 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] ) -- vbuz1=_inc_vbuaa
sta char
inc char
//SEG20 [9] call ln param-assignment [ ] ( main:2 [ ] )
//SEG21 [11] phi from main::@2 to ln [phi:main::@2->ln]
ln_from_b2:
//SEG22 [11] phi (byte) line#12 = (byte~) ln::$0 [phi:main::@2->ln#0] -- register_copy
//SEG22 [11] phi (byte) line#12 = (byte) line#13 [phi:main::@2->ln#0] -- register_copy
jsr ln
//SEG23 main::@return
breturn:
@ -1098,12 +1017,12 @@ main: {
}
//SEG25 ln
ln: {
//SEG26 [12] (byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] ) -- vbuaa=vbuaa_plus_vbuc1
//SEG26 [12] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] ) -- vbuaa=vbuaa_plus_vbuc1
clc
adc #2
//SEG27 ln::@return
breturn:
//SEG28 [13] return [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] )
//SEG28 [13] return [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] )
rts
}
@ -1134,26 +1053,26 @@ ASSEMBLER
//SEG8 @end
//SEG9 main
main: {
//SEG10 [5] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
//SEG10 [5] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
//SEG11 [11] phi from main to ln [phi:main->ln]
//SEG12 [11] phi (byte) line#12 = (byte/signed byte/word/signed word) 64 [phi:main->ln#0] -- vbuaa=vbuc1
lda #$40
jsr ln
//SEG13 main::@1
//SEG14 [6] (byte) char#2 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] ) -- vbuz1=_inc_vbuaa
//SEG14 [6] (byte) char#2 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] ) -- vbuz1=_inc_vbuaa
sta char
inc char
//SEG15 [7] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
//SEG15 [7] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
//SEG16 [11] phi from main::@1 to ln [phi:main::@1->ln]
//SEG17 [11] phi (byte) line#12 = (byte~) ln::$0 [phi:main::@1->ln#0] -- register_copy
//SEG17 [11] phi (byte) line#12 = (byte) line#13 [phi:main::@1->ln#0] -- register_copy
jsr ln
//SEG18 main::@2
//SEG19 [8] (byte) char#4 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] ) -- vbuz1=_inc_vbuaa
//SEG19 [8] (byte) char#4 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] ) -- vbuz1=_inc_vbuaa
sta char
inc char
//SEG20 [9] call ln param-assignment [ ] ( main:2 [ ] )
//SEG21 [11] phi from main::@2 to ln [phi:main::@2->ln]
//SEG22 [11] phi (byte) line#12 = (byte~) ln::$0 [phi:main::@2->ln#0] -- register_copy
//SEG22 [11] phi (byte) line#12 = (byte) line#13 [phi:main::@2->ln#0] -- register_copy
jsr ln
//SEG23 main::@return
//SEG24 [10] return [ ] ( main:2 [ ] )
@ -1161,11 +1080,11 @@ main: {
}
//SEG25 ln
ln: {
//SEG26 [12] (byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] ) -- vbuaa=vbuaa_plus_vbuc1
//SEG26 [12] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] ) -- vbuaa=vbuaa_plus_vbuc1
clc
adc #2
//SEG27 ln::@return
//SEG28 [13] return [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] )
//SEG28 [13] return [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] )
rts
}
@ -1178,15 +1097,15 @@ FINAL SYMBOL TABLE
(byte) char#4 char zp ZP_BYTE:2 20.0
(byte) line
(byte) line#12 reg byte a 6.0
(byte) line#13 reg byte a 1.6666666666666665
(void()) ln()
(byte~) ln::$0 reg byte a 1.6666666666666665
(label) ln::@return
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@return
reg byte a [ line#12 ln::$0 ]
reg byte a [ line#12 line#13 ]
zp ZP_BYTE:2 [ char#2 char#4 ]
FINAL CODE
@ -1206,26 +1125,26 @@ FINAL CODE
//SEG8 @end
//SEG9 main
main: {
//SEG10 [5] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
//SEG10 [5] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
//SEG11 [11] phi from main to ln [phi:main->ln]
//SEG12 [11] phi (byte) line#12 = (byte/signed byte/word/signed word) 64 [phi:main->ln#0] -- vbuaa=vbuc1
lda #$40
jsr ln
//SEG13 main::@1
//SEG14 [6] (byte) char#2 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] ) -- vbuz1=_inc_vbuaa
//SEG14 [6] (byte) char#2 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] ) -- vbuz1=_inc_vbuaa
sta char
inc char
//SEG15 [7] call ln param-assignment [ ln::$0 ] ( main:2 [ ln::$0 ] )
//SEG15 [7] call ln param-assignment [ line#13 ] ( main:2 [ line#13 ] )
//SEG16 [11] phi from main::@1 to ln [phi:main::@1->ln]
//SEG17 [11] phi (byte) line#12 = (byte~) ln::$0 [phi:main::@1->ln#0] -- register_copy
//SEG17 [11] phi (byte) line#12 = (byte) line#13 [phi:main::@1->ln#0] -- register_copy
jsr ln
//SEG18 main::@2
//SEG19 [8] (byte) char#4 ← ++ (byte~) ln::$0 [ ln::$0 ] ( main:2 [ ln::$0 ] ) -- vbuz1=_inc_vbuaa
//SEG19 [8] (byte) char#4 ← ++ (byte) line#13 [ line#13 ] ( main:2 [ line#13 ] ) -- vbuz1=_inc_vbuaa
sta char
inc char
//SEG20 [9] call ln param-assignment [ ] ( main:2 [ ] )
//SEG21 [11] phi from main::@2 to ln [phi:main::@2->ln]
//SEG22 [11] phi (byte) line#12 = (byte~) ln::$0 [phi:main::@2->ln#0] -- register_copy
//SEG22 [11] phi (byte) line#12 = (byte) line#13 [phi:main::@2->ln#0] -- register_copy
jsr ln
//SEG23 main::@return
//SEG24 [10] return [ ] ( main:2 [ ] )
@ -1233,11 +1152,11 @@ main: {
}
//SEG25 ln
ln: {
//SEG26 [12] (byte~) ln::$0 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] ) -- vbuaa=vbuaa_plus_vbuc1
//SEG26 [12] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word) 2 [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] ) -- vbuaa=vbuaa_plus_vbuc1
clc
adc #2
//SEG27 ln::@return
//SEG28 [13] return [ ln::$0 ] ( main:2::ln:5 [ ln::$0 ] main:2::ln:7 [ ln::$0 ] main:2::ln:9 [ ln::$0 ] )
//SEG28 [13] return [ line#13 ] ( main:2::ln:5 [ line#13 ] main:2::ln:7 [ line#13 ] main:2::ln:9 [ line#13 ] )
rts
}

View File

@ -6,13 +6,13 @@
(byte) char#4 char zp ZP_BYTE:2 20.0
(byte) line
(byte) line#12 reg byte a 6.0
(byte) line#13 reg byte a 1.6666666666666665
(void()) ln()
(byte~) ln::$0 reg byte a 1.6666666666666665
(label) ln::@return
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@return
reg byte a [ line#12 ln::$0 ]
reg byte a [ line#12 line#13 ]
zp ZP_BYTE:2 [ char#2 char#4 ]

View File

@ -22,9 +22,9 @@ main: {
lda #>$400
sta line_cursor+1
jsr print_ln
lda print_ln._0
lda line_cursor
sta char_cursor
lda print_ln._0+1
lda line_cursor+1
sta char_cursor+1
lda #<msg2
sta print_str.str
@ -32,9 +32,9 @@ main: {
sta print_str.str+1
jsr print_str
jsr print_ln
lda print_ln._0
lda line_cursor
sta char_cursor
lda print_ln._0+1
lda line_cursor+1
sta char_cursor+1
lda #<msg3
sta print_str.str
@ -45,20 +45,19 @@ main: {
rts
}
print_ln: {
.label _0 = 2
b1:
lda _0
lda line_cursor
clc
adc #$28
sta _0
sta line_cursor
bcc !+
inc _0+1
inc line_cursor+1
!:
lda _0+1
lda line_cursor+1
cmp char_cursor+1
bcc b1
bne !+
lda _0
lda line_cursor
cmp char_cursor
bcc b1
!:

View File

@ -13,52 +13,52 @@ main: scope:[main] from @6
to:main::@1
main::@1: scope:[main] from main
[6] phi() [ char_cursor#13 ] ( main:2 [ char_cursor#13 ] )
[7] call print_ln param-assignment [ print_ln::$0 ] ( main:2 [ print_ln::$0 ] )
[7] call print_ln param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] )
to:main::@2
main::@2: scope:[main] from main::@1
[8] (byte*~) char_cursor#34 ← (byte*~) print_ln::$0 [ char_cursor#34 print_ln::$0 ] ( main:2 [ char_cursor#34 print_ln::$0 ] )
[9] call print_str param-assignment [ print_ln::$0 char_cursor#13 ] ( main:2 [ print_ln::$0 char_cursor#13 ] )
[8] (byte*~) char_cursor#31 ← (byte*) line_cursor#1 [ char_cursor#31 line_cursor#1 ] ( main:2 [ char_cursor#31 line_cursor#1 ] )
[9] call print_str param-assignment [ line_cursor#1 char_cursor#13 ] ( main:2 [ line_cursor#1 char_cursor#13 ] )
to:main::@3
main::@3: scope:[main] from main::@2
[10] phi() [ print_ln::$0 char_cursor#13 ] ( main:2 [ print_ln::$0 char_cursor#13 ] )
[11] call print_ln param-assignment [ print_ln::$0 ] ( main:2 [ print_ln::$0 ] )
[10] phi() [ line_cursor#1 char_cursor#13 ] ( main:2 [ line_cursor#1 char_cursor#13 ] )
[11] call print_ln param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] )
to:main::@4
main::@4: scope:[main] from main::@3
[12] (byte*~) char_cursor#35 ← (byte*~) print_ln::$0 [ print_ln::$0 char_cursor#35 ] ( main:2 [ print_ln::$0 char_cursor#35 ] )
[13] call print_str param-assignment [ print_ln::$0 char_cursor#13 ] ( main:2 [ print_ln::$0 char_cursor#13 ] )
[12] (byte*~) char_cursor#32 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#32 ] ( main:2 [ line_cursor#1 char_cursor#32 ] )
[13] call print_str param-assignment [ line_cursor#1 char_cursor#13 ] ( main:2 [ line_cursor#1 char_cursor#13 ] )
to:main::@5
main::@5: scope:[main] from main::@4
[14] phi() [ print_ln::$0 char_cursor#13 ] ( main:2 [ print_ln::$0 char_cursor#13 ] )
[14] phi() [ line_cursor#1 char_cursor#13 ] ( main:2 [ line_cursor#1 char_cursor#13 ] )
[15] call print_ln param-assignment [ ] ( main:2 [ ] )
to:main::@return
main::@return: scope:[main] from main::@5
[16] return [ ] ( main:2 [ ] )
to:@return
print_ln: scope:[print_ln] from main::@1 main::@3 main::@5
[17] (byte*) line_cursor#16 ← phi( main::@1/((byte*))(word/signed word) 1024 main::@3/(byte*~) print_ln::$0 main::@5/(byte*~) print_ln::$0 ) [ line_cursor#16 char_cursor#13 ] ( main:2::print_ln:7 [ line_cursor#16 char_cursor#13 ] main:2::print_ln:11 [ line_cursor#16 char_cursor#13 ] main:2::print_ln:15 [ line_cursor#16 char_cursor#13 ] )
[17] (byte*) line_cursor#16 ← phi( main::@1/((byte*))(word/signed word) 1024 main::@3/(byte*) line_cursor#1 main::@5/(byte*) line_cursor#1 ) [ line_cursor#16 char_cursor#13 ] ( main:2::print_ln:7 [ line_cursor#16 char_cursor#13 ] main:2::print_ln:11 [ line_cursor#16 char_cursor#13 ] main:2::print_ln:15 [ line_cursor#16 char_cursor#13 ] )
to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
[18] (byte*) line_cursor#8 ← phi( print_ln/(byte*) line_cursor#16 print_ln::@1/(byte*~) print_ln::$0 ) [ line_cursor#8 char_cursor#13 ] ( main:2::print_ln:7 [ line_cursor#8 char_cursor#13 ] main:2::print_ln:11 [ line_cursor#8 char_cursor#13 ] main:2::print_ln:15 [ line_cursor#8 char_cursor#13 ] )
[19] (byte*~) print_ln::$0 ← (byte*) line_cursor#8 + (byte/signed byte/word/signed word) 40 [ print_ln::$0 char_cursor#13 ] ( main:2::print_ln:7 [ print_ln::$0 char_cursor#13 ] main:2::print_ln:11 [ print_ln::$0 char_cursor#13 ] main:2::print_ln:15 [ print_ln::$0 char_cursor#13 ] )
[20] if((byte*~) print_ln::$0<(byte*) char_cursor#13) goto print_ln::@1 [ print_ln::$0 char_cursor#13 ] ( main:2::print_ln:7 [ print_ln::$0 char_cursor#13 ] main:2::print_ln:11 [ print_ln::$0 char_cursor#13 ] main:2::print_ln:15 [ print_ln::$0 char_cursor#13 ] )
[18] (byte*) line_cursor#8 ← phi( print_ln/(byte*) line_cursor#16 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#8 char_cursor#13 ] ( main:2::print_ln:7 [ line_cursor#8 char_cursor#13 ] main:2::print_ln:11 [ line_cursor#8 char_cursor#13 ] main:2::print_ln:15 [ line_cursor#8 char_cursor#13 ] )
[19] (byte*) line_cursor#1 ← (byte*) line_cursor#8 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#13 ] ( main:2::print_ln:7 [ line_cursor#1 char_cursor#13 ] main:2::print_ln:11 [ line_cursor#1 char_cursor#13 ] main:2::print_ln:15 [ line_cursor#1 char_cursor#13 ] )
[20] if((byte*) line_cursor#1<(byte*) char_cursor#13) goto print_ln::@1 [ line_cursor#1 char_cursor#13 ] ( main:2::print_ln:7 [ line_cursor#1 char_cursor#13 ] main:2::print_ln:11 [ line_cursor#1 char_cursor#13 ] main:2::print_ln:15 [ line_cursor#1 char_cursor#13 ] )
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[21] return [ print_ln::$0 ] ( main:2::print_ln:7 [ print_ln::$0 ] main:2::print_ln:11 [ print_ln::$0 ] main:2::print_ln:15 [ print_ln::$0 ] )
[21] return [ line_cursor#1 ] ( main:2::print_ln:7 [ line_cursor#1 ] main:2::print_ln:11 [ line_cursor#1 ] main:2::print_ln:15 [ line_cursor#1 ] )
to:@return
print_str: scope:[print_str] from main main::@2 main::@4
[22] (byte*) char_cursor#29 ← phi( main/((byte*))(word/signed word) 1024 main::@2/(byte*~) char_cursor#34 main::@4/(byte*~) char_cursor#35 ) [ print_str::str#6 char_cursor#29 ] ( main:2::print_str:5 [ print_str::str#6 char_cursor#29 ] main:2::print_str:9 [ print_ln::$0 print_str::str#6 char_cursor#29 ] main:2::print_str:13 [ print_ln::$0 print_str::str#6 char_cursor#29 ] )
[22] (byte*) print_str::str#6 ← phi( main/(const byte[]) msg#0 main::@2/(const byte[]) msg2#0 main::@4/(const byte[]) msg3#0 ) [ print_str::str#6 char_cursor#29 ] ( main:2::print_str:5 [ print_str::str#6 char_cursor#29 ] main:2::print_str:9 [ print_ln::$0 print_str::str#6 char_cursor#29 ] main:2::print_str:13 [ print_ln::$0 print_str::str#6 char_cursor#29 ] )
[22] (byte*) char_cursor#29 ← phi( main/((byte*))(word/signed word) 1024 main::@2/(byte*~) char_cursor#31 main::@4/(byte*~) char_cursor#32 ) [ print_str::str#6 char_cursor#29 ] ( main:2::print_str:5 [ print_str::str#6 char_cursor#29 ] main:2::print_str:9 [ line_cursor#1 print_str::str#6 char_cursor#29 ] main:2::print_str:13 [ line_cursor#1 print_str::str#6 char_cursor#29 ] )
[22] (byte*) print_str::str#6 ← phi( main/(const byte[]) msg#0 main::@2/(const byte[]) msg2#0 main::@4/(const byte[]) msg3#0 ) [ print_str::str#6 char_cursor#29 ] ( main:2::print_str:5 [ print_str::str#6 char_cursor#29 ] main:2::print_str:9 [ line_cursor#1 print_str::str#6 char_cursor#29 ] main:2::print_str:13 [ line_cursor#1 print_str::str#6 char_cursor#29 ] )
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
[23] (byte*) char_cursor#13 ← phi( print_str/(byte*) char_cursor#29 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ char_cursor#13 print_str::str#4 ] main:2::print_str:9 [ print_ln::$0 char_cursor#13 print_str::str#4 ] main:2::print_str:13 [ print_ln::$0 char_cursor#13 print_str::str#4 ] )
[23] (byte*) print_str::str#4 ← phi( print_str/(byte*) print_str::str#6 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ char_cursor#13 print_str::str#4 ] main:2::print_str:9 [ print_ln::$0 char_cursor#13 print_str::str#4 ] main:2::print_str:13 [ print_ln::$0 char_cursor#13 print_str::str#4 ] )
[24] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 [ char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ char_cursor#13 print_str::str#4 ] main:2::print_str:9 [ print_ln::$0 char_cursor#13 print_str::str#4 ] main:2::print_str:13 [ print_ln::$0 char_cursor#13 print_str::str#4 ] )
[23] (byte*) char_cursor#13 ← phi( print_str/(byte*) char_cursor#29 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ char_cursor#13 print_str::str#4 ] main:2::print_str:9 [ line_cursor#1 char_cursor#13 print_str::str#4 ] main:2::print_str:13 [ line_cursor#1 char_cursor#13 print_str::str#4 ] )
[23] (byte*) print_str::str#4 ← phi( print_str/(byte*) print_str::str#6 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ char_cursor#13 print_str::str#4 ] main:2::print_str:9 [ line_cursor#1 char_cursor#13 print_str::str#4 ] main:2::print_str:13 [ line_cursor#1 char_cursor#13 print_str::str#4 ] )
[24] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 [ char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ char_cursor#13 print_str::str#4 ] main:2::print_str:9 [ line_cursor#1 char_cursor#13 print_str::str#4 ] main:2::print_str:13 [ line_cursor#1 char_cursor#13 print_str::str#4 ] )
to:print_str::@return
print_str::@return: scope:[print_str] from print_str::@1
[25] return [ char_cursor#13 ] ( main:2::print_str:5 [ char_cursor#13 ] main:2::print_str:9 [ print_ln::$0 char_cursor#13 ] main:2::print_str:13 [ print_ln::$0 char_cursor#13 ] )
[25] return [ char_cursor#13 ] ( main:2::print_str:5 [ char_cursor#13 ] main:2::print_str:9 [ line_cursor#1 char_cursor#13 ] main:2::print_str:13 [ line_cursor#1 char_cursor#13 ] )
to:@return
print_str::@2: scope:[print_str] from print_str::@1
[26] *((byte*) char_cursor#13) ← *((byte*) print_str::str#4) [ char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ char_cursor#13 print_str::str#4 ] main:2::print_str:9 [ print_ln::$0 char_cursor#13 print_str::str#4 ] main:2::print_str:13 [ print_ln::$0 char_cursor#13 print_str::str#4 ] )
[27] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#13 [ print_str::str#4 char_cursor#1 ] ( main:2::print_str:5 [ print_str::str#4 char_cursor#1 ] main:2::print_str:9 [ print_ln::$0 print_str::str#4 char_cursor#1 ] main:2::print_str:13 [ print_ln::$0 print_str::str#4 char_cursor#1 ] )
[28] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:5 [ print_str::str#0 char_cursor#1 ] main:2::print_str:9 [ print_ln::$0 print_str::str#0 char_cursor#1 ] main:2::print_str:13 [ print_ln::$0 print_str::str#0 char_cursor#1 ] )
[26] *((byte*) char_cursor#13) ← *((byte*) print_str::str#4) [ char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ char_cursor#13 print_str::str#4 ] main:2::print_str:9 [ line_cursor#1 char_cursor#13 print_str::str#4 ] main:2::print_str:13 [ line_cursor#1 char_cursor#13 print_str::str#4 ] )
[27] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#13 [ print_str::str#4 char_cursor#1 ] ( main:2::print_str:5 [ print_str::str#4 char_cursor#1 ] main:2::print_str:9 [ line_cursor#1 print_str::str#4 char_cursor#1 ] main:2::print_str:13 [ line_cursor#1 print_str::str#4 char_cursor#1 ] )
[28] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:5 [ print_str::str#0 char_cursor#1 ] main:2::print_str:9 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:13 [ line_cursor#1 print_str::str#0 char_cursor#1 ] )
to:print_str::@1

File diff suppressed because it is too large Load Diff

View File

@ -5,9 +5,10 @@
(byte*) char_cursor#1 char_cursor zp ZP_WORD:6 11.0
(byte*) char_cursor#13 char_cursor zp ZP_WORD:6 3.2857142857142856
(byte*) char_cursor#29 char_cursor zp ZP_WORD:6 6.0
(byte*~) char_cursor#34 char_cursor zp ZP_WORD:6 4.0
(byte*~) char_cursor#35 char_cursor zp ZP_WORD:6 4.0
(byte*~) char_cursor#31 char_cursor zp ZP_WORD:6 4.0
(byte*~) char_cursor#32 char_cursor zp ZP_WORD:6 4.0
(byte*) line_cursor
(byte*) line_cursor#1 line_cursor zp ZP_WORD:2 3.7272727272727275
(byte*) line_cursor#16 line_cursor zp ZP_WORD:2 6.0
(byte*) line_cursor#8 line_cursor zp ZP_WORD:2 24.0
(void()) main()
@ -24,7 +25,6 @@
(byte[]) msg3
(const byte[]) msg3#0 msg3 = (string) "hello 2017! @"
(void()) print_ln()
(byte*~) print_ln::$0 $0 zp ZP_WORD:2 3.7272727272727275
(label) print_ln::@1
(label) print_ln::@return
(void()) print_str((byte*) print_str::str)
@ -36,6 +36,6 @@
(byte*) print_str::str#4 str zp ZP_WORD:4 11.5
(byte*) print_str::str#6 str zp ZP_WORD:4 2.0
zp ZP_WORD:2 [ line_cursor#8 line_cursor#16 print_ln::$0 ]
zp ZP_WORD:2 [ line_cursor#8 line_cursor#16 line_cursor#1 ]
zp ZP_WORD:4 [ print_str::str#4 print_str::str#6 print_str::str#0 ]
zp ZP_WORD:6 [ char_cursor#13 char_cursor#29 char_cursor#34 char_cursor#35 char_cursor#1 ]
zp ZP_WORD:6 [ char_cursor#13 char_cursor#29 char_cursor#31 char_cursor#32 char_cursor#1 ]

View File

@ -50,12 +50,10 @@ scroll_soft: {
}
scroll_bit: {
.label _4 = 9
.label _5 = 3
.label c = 9
.label sc = 5
lsr current_bit
lda current_bit
lsr
sta current_bit
bne b1
jsr next_char
sta c
@ -70,10 +68,10 @@ scroll_bit: {
lda #<CHARGEN
clc
adc _4
sta _5
sta current_chargen
lda #>CHARGEN
adc _4+1
sta _5+1
sta current_chargen+1
lda #$80
sta current_bit
b1:

View File

@ -51,107 +51,105 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1
[20] return [ scroll#10 current_bit#12 nxt#14 current_chargen#11 ] ( main:2::scroll_soft:10 [ scroll#10 current_bit#12 nxt#14 current_chargen#11 ] )
to:@return
scroll_bit: scope:[scroll_bit] from scroll_soft::@2
[21] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 scroll_bit::$0 ] )
[22] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] )
[23] if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] )
[21] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] )
[22] if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] )
to:scroll_bit::@4
scroll_bit::@4: scope:[scroll_bit] from scroll_bit
[24] phi() [ nxt#31 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 ] )
[25] call next_char param-assignment [ next_char::c#2 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ next_char::c#2 nxt#19 ] )
[26] (byte) next_char::return#0 ← (byte) next_char::c#2 [ next_char::return#0 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ next_char::return#0 nxt#19 ] )
[23] phi() [ nxt#31 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 ] )
[24] call next_char param-assignment [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ next_char::return#1 nxt#19 ] )
[25] (byte) next_char::return#0 ← (byte) next_char::return#1 [ next_char::return#0 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ next_char::return#0 nxt#19 ] )
to:scroll_bit::@8
scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4
[27] (byte~) scroll_bit::$3 ← (byte) next_char::return#0 [ scroll_bit::$3 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::$3 nxt#19 ] )
[28] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::c#0 nxt#19 ] )
[29] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::$4 nxt#19 ] )
[30] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::$5 nxt#19 ] )
[31] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] )
[26] (byte~) scroll_bit::$3 ← (byte) next_char::return#0 [ scroll_bit::$3 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::$3 nxt#19 ] )
[27] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::c#0 nxt#19 ] )
[28] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::$4 nxt#19 ] )
[29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] )
to:scroll_bit::@1
scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8
[32] (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#19 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
[32] (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte/word/signed word) 128 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
[32] (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
[33] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
[30] (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#19 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
[30] (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte/word/signed word) 128 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
[30] (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
[31] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
to:scroll_bit::@7
scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1
asm { sei }
[35] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
[33] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
to:scroll_bit::@2
scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7
[36] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
[36] (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte/signed byte/word/signed word) 0 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
[37] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] )
[38] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] )
[39] if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
[34] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
[34] (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte/signed byte/word/signed word) 0 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
[35] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] )
[36] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] )
[37] if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
to:scroll_bit::@5
scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2
[40] phi() [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
[38] phi() [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
to:scroll_bit::@3
scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5
[41] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte/word/signed word) 128+(byte) ' ' ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] )
[42] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
[43] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] )
[44] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] )
[45] if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] )
[39] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte/word/signed word) 128+(byte) ' ' ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] )
[40] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
[41] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] )
[42] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] )
[43] if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] )
to:scroll_bit::@6
scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3
[46] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
[44] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
asm { cli }
to:scroll_bit::@return
scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6
[48] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
[46] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] )
to:@return
scroll_hard: scope:[scroll_hard] from scroll_bit::@1
[49] phi() [ ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 ] )
[47] phi() [ ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 ] )
to:scroll_hard::@1
scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1
[50] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte/signed byte/word/signed word) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[51] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] )
[52] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[53] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] )
[54] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[55] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] )
[56] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[57] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] )
[58] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[59] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] )
[60] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[61] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] )
[62] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[63] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] )
[64] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[65] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] )
[66] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[67] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] )
[68] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] )
[48] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte/signed byte/word/signed word) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[49] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] )
[50] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[51] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] )
[52] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[53] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] )
[54] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[55] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] )
[56] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[57] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] )
[58] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[59] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] )
[60] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[61] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] )
[62] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[63] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] )
[64] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[65] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] )
[66] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] )
to:scroll_hard::@return
scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1
[69] return [ ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:33 [ current_bit#21 nxt#36 current_chargen#19 ] )
[67] return [ ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 ] )
to:@return
next_char: scope:[next_char] from scroll_bit::@4
[70] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:25 [ nxt#31 next_char::c#0 ] )
[71] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:25 [ nxt#31 next_char::c#0 ] )
[68] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] )
[69] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] )
to:next_char::@2
next_char::@2: scope:[next_char] from next_char
[72] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:25 [ next_char::c#1 ] )
[70] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::c#1 ] )
to:next_char::@1
next_char::@1: scope:[next_char] from next_char next_char::@2
[73] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:25 [ next_char::c#2 nxt#18 ] )
[73] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:25 [ next_char::c#2 nxt#18 ] )
[74] (byte*) nxt#19 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:25 [ next_char::c#2 nxt#19 ] )
[71] (byte) next_char::return#1 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::return#1 nxt#18 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#18 ] )
[71] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::return#1 nxt#18 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#18 ] )
[72] (byte*) nxt#19 ← ++ (byte*) nxt#18 [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] )
to:next_char::@return
next_char::@return: scope:[next_char] from next_char::@1
[75] return [ next_char::c#2 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:25 [ next_char::c#2 nxt#19 ] )
[73] return [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] )
to:@return
fillscreen: scope:[fillscreen] from main
[76] phi() [ ] ( main:2::fillscreen:5 [ ] )
[74] phi() [ ] ( main:2::fillscreen:5 [ ] )
to:fillscreen::@1
fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1
[77] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] )
[78] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] )
[79] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] )
[80] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] )
[75] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] )
[76] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] )
[77] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] )
[78] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] )
to:fillscreen::@return
fillscreen::@return: scope:[fillscreen] from fillscreen::@1
[81] return [ ] ( main:2::fillscreen:5 [ ] )
[79] return [ ] ( main:2::fillscreen:5 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,7 @@
(byte*) current_chargen
(byte*) current_chargen#11 current_chargen zp ZP_WORD:3 2.5
(byte*) current_chargen#19 current_chargen zp ZP_WORD:3 0.9444444444444444
(byte*) current_chargen#27 current_chargen zp ZP_WORD:3 1.5
(byte*) current_chargen#27 current_chargen zp ZP_WORD:3 1.666666666666667
(byte*) current_chargen#5 current_chargen zp ZP_WORD:3 4.0
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)
(label) fillscreen::@1
@ -47,25 +47,23 @@
(byte) next_char::c
(byte) next_char::c#0 reg byte a 3.0
(byte) next_char::c#1 reg byte a 4.0
(byte) next_char::c#2 reg byte a 1.5
(byte) next_char::return
(byte) next_char::return#0 reg byte a 4.0
(byte) next_char::return#1 reg byte a 1.5
(byte*) nxt
(byte*) nxt#14 nxt zp ZP_WORD:7 2.5
(byte*) nxt#18 nxt zp ZP_WORD:7 4.0
(byte*) nxt#19 nxt zp ZP_WORD:7 0.4444444444444444
(byte*) nxt#31 nxt zp ZP_WORD:7 1.4615384615384612
(byte*) nxt#19 nxt zp ZP_WORD:7 0.5
(byte*) nxt#31 nxt zp ZP_WORD:7 1.5833333333333335
(byte*) nxt#36 nxt zp ZP_WORD:7 0.3333333333333333
(byte) scroll
(byte) scroll#10 reg byte x 2.5
(byte) scroll#18 reg byte x 3.25
(byte) scroll#3 reg byte x 3.0
(void()) scroll_bit()
(byte~) scroll_bit::$0 reg byte a 4.0
(byte~) scroll_bit::$10 reg byte a 22.0
(byte~) scroll_bit::$3 reg byte a 4.0
(word~) scroll_bit::$4 $4 zp ZP_WORD:9 4.0
(byte*~) scroll_bit::$5 $5 zp ZP_WORD:3 4.0
(label) scroll_bit::@1
(label) scroll_bit::@2
(label) scroll_bit::@3
@ -124,14 +122,13 @@
reg byte x [ scroll#18 scroll#10 scroll#3 ]
zp ZP_BYTE:2 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ]
zp ZP_WORD:3 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 scroll_bit::$5 ]
zp ZP_WORD:3 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 ]
reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ]
zp ZP_WORD:5 [ scroll_bit::sc#2 scroll_bit::sc#1 ]
reg byte a [ scroll_bit::b#2 ]
reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ]
zp ZP_WORD:7 [ nxt#18 nxt#31 nxt#14 nxt#36 nxt#19 ]
reg byte a [ next_char::c#2 next_char::c#0 next_char::c#1 ]
reg byte a [ scroll_bit::$0 ]
reg byte a [ next_char::return#1 next_char::c#0 next_char::c#1 ]
reg byte a [ next_char::return#0 ]
reg byte a [ scroll_bit::$3 ]
zp ZP_WORD:9 [ scroll_bit::c#0 scroll_bit::$4 ]

View File

@ -0,0 +1,213 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.const SPRITES_XPOS = $d000
.const SPRITES_YPOS = $d001
.const SPRITES_XMSB = $d010
.const RASTER = $d012
.const SPRITES_ENABLE = $d015
.const SPRITES_EXPAND_Y = $d017
.const SPRITES_EXPAND_X = $d01d
.const SPRITES_COLS = $d027
.const WHITE = 1
.const SCREEN = $400
.const SPRITE = $2000
.const g = -5
.const SPRITES_PTR = SCREEN+$3f8
.label yvel_init = 4
.label yvel = 4
.label yvel_9 = 6
.label xpos = 8
.label ypos = $a
.label yvel_10 = 6
.label xvel = 2
.label yvel_12 = 6
.label yvel_22 = 6
jsr main
main: {
jsr init
lda #$64
sta yvel_init
lda #0
sta yvel_init+1
lda #$c8
sta xvel
lda #0
sta xvel+1
sta ypos
sta ypos+1
sta xpos
sta xpos+1
lda #$64
sta yvel_12
lda #0
sta yvel_12+1
b2:
lda RASTER
cmp #$ff
bne b2
jsr anim
jmp b2
}
anim: {
.label _10 = $e
.label _12 = $10
.label sprite_x = $e
.label sprite_y = $10
lda ypos+1
bpl b1
sec
lda xvel
eor #$ff
adc #0
sta xvel
lda xvel+1
eor #$ff
adc #0
sta xvel+1
lda yvel_init
sec
sbc #<$a
sta yvel_init
lda yvel_init+1
sbc #>$a
sta yvel_init+1
lda yvel_init
cmp #<-$c8
lda yvel_init+1
sbc #>-$c8
bvc !+
eor #$80
!:
bpl b2
lda #$c8
sta yvel
lda #0
sta yvel+1
b2:
lda yvel
sta yvel_22
lda yvel+1
sta yvel_22+1
lda #0
sta ypos
sta ypos+1
sta xpos
sta xpos+1
b1:
lda yvel_10
clc
adc #<g
sta yvel_10
lda yvel_10+1
adc #>g
sta yvel_10+1
lda xpos
clc
adc xvel
sta xpos
lda xpos+1
adc xvel+1
sta xpos+1
lda ypos
clc
adc yvel_10
sta ypos
lda ypos+1
adc yvel_10+1
sta ypos+1
lda xpos
sta $ff
lda xpos+1
sta _10
lda #0
bit xpos+1
bpl !+
lda #$ff
!:
sta _10+1
rol $ff
rol _10
rol _10+1
lda sprite_x
clc
adc #<$a0
sta sprite_x
lda sprite_x+1
adc #>$a0
sta sprite_x+1
lda ypos
sta $ff
lda ypos+1
sta _12
lda #0
bit ypos+1
bpl !+
lda #$ff
!:
sta _12+1
rol $ff
rol _12
rol _12+1
rol $ff
rol _12
rol _12+1
rol $ff
rol _12
rol _12+1
lda #<$e6
sec
sbc sprite_y
sta sprite_y
lda #>$e6
sbc sprite_y+1
sta sprite_y+1
lda sprite_x
sta SPRITES_XPOS+0
lda sprite_y
sta SPRITES_YPOS+0
lda sprite_x+1
sta SPRITES_XMSB
rts
}
init: {
.label sc = $c
lda #1
sta SPRITES_ENABLE
lda #0
sta SPRITES_EXPAND_X
sta SPRITES_EXPAND_Y
lda #$64
sta SPRITES_XPOS+0
sta SPRITES_YPOS+0
lda #WHITE
sta SPRITES_COLS+0
lda #$ff & SPRITE/$40
sta SPRITES_PTR+0
lda #<SCREEN
sta sc
lda #>SCREEN
sta sc+1
b1:
ldy #0
lda #' '
sta (sc),y
inc sc
bne !+
inc sc+1
!:
lda sc+1
cmp #>SCREEN+$3e8
bne b1
lda sc
cmp #<SCREEN+$3e8
bne b1
ldx #0
b2:
lda #$ff
sta SPRITE,x
inx
cpx #$40
bne b2
rts
}

View File

@ -0,0 +1,93 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@3
@3: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
@end: scope:[] from @3
[3] phi() [ ] ( )
main: scope:[main] from @3
[4] phi() [ ] ( main:2 [ ] )
[5] call init param-assignment [ ] ( main:2 [ ] )
to:main::@2
main::@2: scope:[main] from main main::@2 main::@6
[6] (signed word) yvel_init#13 ← phi( main::@6/(signed word) yvel_init#11 main/(byte/signed byte/word/signed word) 100 ) [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] )
[6] (signed word) xvel#12 ← phi( main::@6/(signed word) xvel#10 main/(byte/word/signed word) 200 ) [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] )
[6] (signed word) ypos#13 ← phi( main::@6/(signed word) ypos#11 main/(byte/signed byte/word/signed word) 0 ) [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] )
[6] (signed word) xpos#12 ← phi( main::@6/(signed word) xpos#10 main/(byte/signed byte/word/signed word) 0 ) [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] )
[6] (signed word) yvel#12 ← phi( main::@6/(signed word) yvel#10 main/(byte/signed byte/word/signed word) 100 ) [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] )
[7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] )
to:main::@3
main::@3: scope:[main] from main::@2
[8] phi() [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] )
[9] call anim param-assignment [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] )
to:main::@6
main::@6: scope:[main] from main::@3
[10] if(true) goto main::@2 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] )
to:main::@return
main::@return: scope:[main] from main::@6
[11] return [ ] ( main:2 [ ] )
to:@return
anim: scope:[anim] from main::@3
[12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] )
to:anim::@3
anim::@3: scope:[anim] from anim
[13] (signed word) xvel#14 ← - (signed word) xvel#12 [ yvel_init#13 xvel#14 ] ( main:2::anim:9 [ yvel_init#13 xvel#14 ] )
[14] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (byte/signed byte/word/signed word) 10 [ xvel#14 yvel_init#3 ] ( main:2::anim:9 [ xvel#14 yvel_init#3 ] )
[15] if((signed word) yvel_init#3>=-(byte/word/signed word) 200) goto anim::@5 [ xvel#14 yvel_init#3 ] ( main:2::anim:9 [ xvel#14 yvel_init#3 ] )
to:anim::@2
anim::@2: scope:[anim] from anim::@3 anim::@5
[16] (signed word) yvel#4 ← phi( anim::@5/(signed word) yvel_init#3 anim::@3/(byte/word/signed word) 200 ) [ xvel#14 yvel#4 ] ( main:2::anim:9 [ xvel#14 yvel#4 ] )
[17] (signed word~) yvel#22 ← (signed word) yvel#4 [ xvel#14 yvel#4 yvel#22 ] ( main:2::anim:9 [ xvel#14 yvel#4 yvel#22 ] )
to:anim::@1
anim::@1: scope:[anim] from anim anim::@2
[18] (signed word) yvel_init#11 ← phi( anim/(signed word) yvel_init#13 anim::@2/(signed word) yvel#4 ) [ xvel#10 yvel_init#11 yvel#9 xpos#9 ypos#10 ] ( main:2::anim:9 [ xvel#10 yvel_init#11 yvel#9 xpos#9 ypos#10 ] )
[18] (signed word) ypos#10 ← phi( anim/(signed word) ypos#13 anim::@2/(byte/signed byte/word/signed word) 0 ) [ xvel#10 yvel_init#11 yvel#9 xpos#9 ypos#10 ] ( main:2::anim:9 [ xvel#10 yvel_init#11 yvel#9 xpos#9 ypos#10 ] )
[18] (signed word) xvel#10 ← phi( anim/(signed word) xvel#12 anim::@2/(signed word) xvel#14 ) [ xvel#10 yvel_init#11 yvel#9 xpos#9 ypos#10 ] ( main:2::anim:9 [ xvel#10 yvel_init#11 yvel#9 xpos#9 ypos#10 ] )
[18] (signed word) xpos#9 ← phi( anim/(signed word) xpos#12 anim::@2/(byte/signed byte/word/signed word) 0 ) [ xvel#10 yvel_init#11 yvel#9 xpos#9 ypos#10 ] ( main:2::anim:9 [ xvel#10 yvel_init#11 yvel#9 xpos#9 ypos#10 ] )
[18] (signed word) yvel#9 ← phi( anim/(signed word) yvel#12 anim::@2/(signed word~) yvel#22 ) [ xvel#10 yvel_init#11 yvel#9 xpos#9 ypos#10 ] ( main:2::anim:9 [ xvel#10 yvel_init#11 yvel#9 xpos#9 ypos#10 ] )
[19] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g#0 [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] ( main:2::anim:9 [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] )
[20] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ( main:2::anim:9 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] )
[21] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] )
[22] (signed word~) anim::$10 ← (signed word) xpos#10 >> (byte/signed byte/word/signed word) 7 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$10 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$10 ] )
[23] (signed word) anim::sprite_x#0 ← (signed word~) anim::$10 + (byte/word/signed word) 160 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] )
[24] (signed word~) anim::$12 ← (signed word) ypos#11 >> (byte/signed byte/word/signed word) 5 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$12 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$12 ] )
[25] (signed word) anim::sprite_y#0 ← (byte/word/signed word) 230 - (signed word~) anim::$12 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 ] )
[26] (byte~) anim::$14 ← ((byte)) (signed word) anim::sprite_x#0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 anim::$14 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 anim::$14 ] )
[27] *((const byte*) SPRITES_XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) anim::$14 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 ] )
[28] (byte~) anim::$15 ← ((byte)) (signed word) anim::sprite_y#0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$15 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$15 ] )
[29] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) anim::$15 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] )
[30] (byte~) anim::$16 ← > (signed word) anim::sprite_x#0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$16 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$16 ] )
[31] *((const byte*) SPRITES_XMSB#0) ← (byte~) anim::$16 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] )
to:anim::@return
anim::@return: scope:[anim] from anim::@1
[32] return [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] )
to:@return
anim::@5: scope:[anim] from anim::@3
[33] phi() [ xvel#14 yvel_init#3 ] ( main:2::anim:9 [ xvel#14 yvel_init#3 ] )
to:anim::@2
init: scope:[init] from main
[34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] )
[35] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::init:5 [ ] )
[36] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::init:5 [ ] )
[37] *((const byte*) SPRITES_XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 100 [ ] ( main:2::init:5 [ ] )
[38] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 100 [ ] ( main:2::init:5 [ ] )
[39] *((const byte*) SPRITES_COLS#0+(byte/signed byte/word/signed word) 0) ← (const byte) WHITE#0 [ ] ( main:2::init:5 [ ] )
[40] *((const byte*) SPRITES_PTR#0+(byte/signed byte/word/signed word) 0) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word) 64 [ ] ( main:2::init:5 [ ] )
to:init::@1
init::@1: scope:[init] from init init::@1
[41] (byte*) init::sc#2 ← phi( init/(const byte*) SCREEN#0 init::@1/(byte*) init::sc#1 ) [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] )
[42] *((byte*) init::sc#2) ← (byte) ' ' [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] )
[43] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 [ init::sc#1 ] ( main:2::init:5 [ init::sc#1 ] )
[44] if((byte*) init::sc#1!=(const byte*) SCREEN#0+(word/signed word) 1000) goto init::@1 [ init::sc#1 ] ( main:2::init:5 [ init::sc#1 ] )
to:init::@2
init::@2: scope:[init] from init::@1 init::@2
[45] (byte) init::i#2 ← phi( init::@2/(byte) init::i#1 init::@1/(byte/signed byte/word/signed word) 0 ) [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] )
[46] *((const byte*) SPRITE#0 + (byte) init::i#2) ← (byte/word/signed word) 255 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] )
[47] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] )
[48] if((byte) init::i#1!=(byte/signed byte/word/signed word) 64) goto init::@2 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] )
to:init::@return
init::@return: scope:[init] from init::@2
[49] return [ ] ( main:2::init:5 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,94 @@
(label) @3
(label) @begin
(label) @end
(byte*) RASTER
(const byte*) RASTER#0 RASTER = ((byte*))(word) 53266
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SPRITE
(const byte*) SPRITE#0 SPRITE = ((byte*))(word/signed word) 8192
(byte*) SPRITES_COLS
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word) 53287
(byte*) SPRITES_ENABLE
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word) 53269
(byte*) SPRITES_EXPAND_X
(const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word) 53277
(byte*) SPRITES_EXPAND_Y
(const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word) 53271
(byte*) SPRITES_PTR
(const byte*) SPRITES_PTR#0 SPRITES_PTR = (const byte*) SCREEN#0+(word/signed word) 1016
(byte*) SPRITES_XMSB
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word) 53264
(byte*) SPRITES_XPOS
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word) 53248
(byte*) SPRITES_YPOS
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word) 53249
(byte) WHITE
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word) 1
(void()) anim()
(signed word~) anim::$10 $10 zp ZP_WORD:14 4.0
(signed word~) anim::$12 $12 zp ZP_WORD:16 4.0
(byte~) anim::$14 reg byte a 4.0
(byte~) anim::$15 reg byte a 4.0
(byte~) anim::$16 reg byte a 4.0
(label) anim::@1
(label) anim::@2
(label) anim::@3
(label) anim::@5
(label) anim::@return
(signed word) anim::sprite_x
(signed word) anim::sprite_x#0 sprite_x zp ZP_WORD:14 0.8571428571428571
(signed word) anim::sprite_y
(signed word) anim::sprite_y#0 sprite_y zp ZP_WORD:16 1.3333333333333333
(signed word) g
(const signed word) g#0 g = -(byte/signed byte/word/signed word) 5
(void()) init()
(label) init::@1
(label) init::@2
(label) init::@return
(byte) init::i
(byte) init::i#1 reg byte x 16.5
(byte) init::i#2 reg byte x 16.5
(byte*) init::sc
(byte*) init::sc#1 sc zp ZP_WORD:12 16.5
(byte*) init::sc#2 sc zp ZP_WORD:12 16.5
(void()) main()
(label) main::@2
(label) main::@3
(label) main::@6
(label) main::@return
(signed word) xpos
(signed word) xpos#10 xpos zp ZP_WORD:8 0.9999999999999999
(signed word) xpos#12 xpos zp ZP_WORD:8 3.25
(signed word) xpos#9 xpos zp ZP_WORD:8 2.0
(signed word) xvel
(signed word) xvel#10 xvel zp ZP_WORD:2 1.0
(signed word) xvel#12 xvel zp ZP_WORD:2 3.75
(signed word) xvel#14 xvel zp ZP_WORD:2 0.6666666666666666
(signed word) ypos
(signed word) ypos#10 ypos zp ZP_WORD:10 1.3333333333333333
(signed word) ypos#11 ypos zp ZP_WORD:10 1.0714285714285714
(signed word) ypos#13 ypos zp ZP_WORD:10 3.75
(signed word) yvel
(signed word) yvel#10 yvel#10 zp ZP_WORD:6 0.9375
(signed word) yvel#12 yvel#12 zp ZP_WORD:6 3.25
(signed word~) yvel#22 yvel#22 zp ZP_WORD:6 4.0
(signed word) yvel#4 yvel zp ZP_WORD:4 3.0
(signed word) yvel#9 yvel#9 zp ZP_WORD:6 6.0
(signed word) yvel_init
(signed word) yvel_init#11 yvel_init zp ZP_WORD:4 0.8823529411764707
(signed word) yvel_init#13 yvel_init zp ZP_WORD:4 3.0
(signed word) yvel_init#3 yvel_init zp ZP_WORD:4 2.0
zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 ]
zp ZP_WORD:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ]
zp ZP_WORD:6 [ yvel#9 yvel#12 yvel#10 yvel#22 ]
zp ZP_WORD:8 [ xpos#9 xpos#12 xpos#10 ]
zp ZP_WORD:10 [ ypos#10 ypos#13 ypos#11 ]
zp ZP_WORD:12 [ init::sc#2 init::sc#1 ]
reg byte x [ init::i#2 init::i#1 ]
zp ZP_WORD:14 [ anim::$10 anim::sprite_x#0 ]
zp ZP_WORD:16 [ anim::$12 anim::sprite_y#0 ]
reg byte a [ anim::$14 ]
reg byte a [ anim::$15 ]
reg byte a [ anim::$16 ]

View File

@ -3,13 +3,11 @@
.pc = $80d "Program"
.const memLo = $fe
.const memHi = $ff
.label char_cursor = 5
.label line_cursor = 3
.label char_cursor = 5
jsr main
main: {
.const f_2pi = $e2e5
.label _3 = 9
.label _12 = 9
.label i = 2
lda #<$4fb
sta setFAC.w
@ -34,9 +32,9 @@ main: {
sta i
b1:
lda i
sta _3
sta setFAC.w
lda #0
sta _3+1
sta setFAC.w+1
jsr setFAC
lda #<f_2pi
sta mulFACbyMEM.mem
@ -70,29 +68,28 @@ main: {
bne b17
rts
b17:
lda print_ln._0
lda line_cursor
sta char_cursor
lda print_ln._0+1
lda line_cursor+1
sta char_cursor+1
jmp b1
f_i: .byte 0, 0, 0, 0, 0
f_127: .byte 0, 0, 0, 0, 0
}
print_ln: {
.label _0 = 3
b1:
lda _0
lda line_cursor
clc
adc #$28
sta _0
sta line_cursor
bcc !+
inc _0+1
inc line_cursor+1
!:
lda _0+1
lda line_cursor+1
cmp char_cursor+1
bcc b1
bne !+
lda _0
lda line_cursor
cmp char_cursor
bcc b1
!:
@ -191,12 +188,11 @@ divMEMbyFAC: {
rts
}
setFAC: {
.label _0 = 7
.label w = 9
lda w
sta _0
sta prepareMEM.mem
lda w+1
sta _0+1
sta prepareMEM.mem+1
jsr prepareMEM
ldy $fe
lda $ff

View File

@ -20,196 +20,189 @@ main::@4: scope:[main] from main::@3
[9] call setMEMtoFAC param-assignment [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main::@17 main::@4
[10] (byte*) line_cursor#13 ← phi( main::@17/(byte*~) print_ln::$0 main::@4/((byte*))(word/signed word) 1024 ) [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[10] (byte*) line_cursor#13 ← phi( main::@17/(byte*) line_cursor#1 main::@4/((byte*))(word/signed word) 1024 ) [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[10] (byte*) char_cursor#32 ← phi( main::@17/(byte*~) char_cursor#48 main::@4/((byte*))(word/signed word) 1024 ) [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[10] (byte) main::i#10 ← phi( main::@17/(byte) main::i#1 main::@4/(byte/signed byte/word/signed word) 1 ) [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[11] (word~) main::$3 ← ((word)) (byte) main::i#10 [ main::i#10 char_cursor#32 line_cursor#13 main::$3 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 main::$3 ] )
[12] (word) setFAC::w#1 ← (word~) main::$3 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#1 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#1 ] )
[13] call setFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[11] (word) setFAC::w#1 ← ((word)) (byte) main::i#10 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#1 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#1 ] )
[12] call setFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:main::@6
main::@6: scope:[main] from main::@1
[14] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[15] call mulFACbyMEM param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[13] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[14] call mulFACbyMEM param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:main::@7
main::@7: scope:[main] from main::@6
[16] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[17] call setMEMtoFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[15] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[16] call setMEMtoFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:main::@8
main::@8: scope:[main] from main::@7
[18] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[19] call setFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[17] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[18] call setFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:main::@9
main::@9: scope:[main] from main::@8
[20] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[21] call divMEMbyFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[19] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[20] call divMEMbyFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:main::@10
main::@10: scope:[main] from main::@9
[22] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[23] call sinFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[21] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[22] call sinFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:main::@11
main::@11: scope:[main] from main::@10
[24] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[25] call mulFACbyMEM param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[23] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[24] call mulFACbyMEM param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:main::@12
main::@12: scope:[main] from main::@11
[26] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[27] call addMEMtoFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[25] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[26] call addMEMtoFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:main::@13
main::@13: scope:[main] from main::@12
[28] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[29] call getFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] )
[30] (word) getFAC::return#2 ← (word) getFAC::return#0 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#2 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#2 ] )
[27] phi() [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[28] call getFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] )
[29] (word) getFAC::return#2 ← (word) getFAC::return#0 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#2 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#2 ] )
to:main::@14
main::@14: scope:[main] from main::@13
[31] (word~) main::$12 ← (word) getFAC::return#2 [ main::i#10 char_cursor#32 line_cursor#13 main::$12 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 main::$12 ] )
[32] (word) print_word::w#0 ← (word~) main::$12 [ main::i#10 char_cursor#32 line_cursor#13 print_word::w#0 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 print_word::w#0 ] )
[33] call print_word param-assignment [ main::i#10 line_cursor#13 char_cursor#10 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#10 ] )
[30] (word) print_word::w#0 ← (word) getFAC::return#2 [ main::i#10 char_cursor#32 line_cursor#13 print_word::w#0 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 print_word::w#0 ] )
[31] call print_word param-assignment [ main::i#10 line_cursor#13 char_cursor#10 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#10 ] )
to:main::@15
main::@15: scope:[main] from main::@14
[34] phi() [ main::i#10 line_cursor#13 char_cursor#10 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#10 ] )
[35] call print_ln param-assignment [ main::i#10 print_ln::$0 ] ( main:2 [ main::i#10 print_ln::$0 ] )
[32] phi() [ main::i#10 line_cursor#13 char_cursor#10 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#10 ] )
[33] call print_ln param-assignment [ main::i#10 line_cursor#1 ] ( main:2 [ main::i#10 line_cursor#1 ] )
to:main::@16
main::@16: scope:[main] from main::@15
[36] (byte) main::i#1 ← ++ (byte) main::i#10 [ main::i#1 print_ln::$0 ] ( main:2 [ main::i#1 print_ln::$0 ] )
[37] if((byte) main::i#1!=(byte/signed byte/word/signed word) 26) goto main::@17 [ main::i#1 print_ln::$0 ] ( main:2 [ main::i#1 print_ln::$0 ] )
[34] (byte) main::i#1 ← ++ (byte) main::i#10 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] )
[35] if((byte) main::i#1!=(byte/signed byte/word/signed word) 26) goto main::@17 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] )
to:main::@return
main::@return: scope:[main] from main::@16
[38] return [ ] ( main:2 [ ] )
[36] return [ ] ( main:2 [ ] )
to:@return
main::@17: scope:[main] from main::@16
[39] (byte*~) char_cursor#48 ← (byte*~) print_ln::$0 [ main::i#1 char_cursor#48 print_ln::$0 ] ( main:2 [ main::i#1 char_cursor#48 print_ln::$0 ] )
[37] (byte*~) char_cursor#48 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#48 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#48 line_cursor#1 ] )
to:main::@1
print_ln: scope:[print_ln] from main::@15
[40] phi() [ line_cursor#13 char_cursor#10 ] ( main:2::print_ln:35 [ main::i#10 line_cursor#13 char_cursor#10 ] )
[38] phi() [ line_cursor#13 char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 line_cursor#13 char_cursor#10 ] )
to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
[41] (byte*) line_cursor#6 ← phi( print_ln/(byte*) line_cursor#13 print_ln::@1/(byte*~) print_ln::$0 ) [ line_cursor#6 char_cursor#10 ] ( main:2::print_ln:35 [ main::i#10 line_cursor#6 char_cursor#10 ] )
[42] (byte*~) print_ln::$0 ← (byte*) line_cursor#6 + (byte/signed byte/word/signed word) 40 [ print_ln::$0 char_cursor#10 ] ( main:2::print_ln:35 [ main::i#10 print_ln::$0 char_cursor#10 ] )
[43] if((byte*~) print_ln::$0<(byte*) char_cursor#10) goto print_ln::@1 [ print_ln::$0 char_cursor#10 ] ( main:2::print_ln:35 [ main::i#10 print_ln::$0 char_cursor#10 ] )
[39] (byte*) line_cursor#6 ← phi( print_ln/(byte*) line_cursor#13 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#6 char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 line_cursor#6 char_cursor#10 ] )
[40] (byte*) line_cursor#1 ← (byte*) line_cursor#6 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 line_cursor#1 char_cursor#10 ] )
[41] if((byte*) line_cursor#1<(byte*) char_cursor#10) goto print_ln::@1 [ line_cursor#1 char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 line_cursor#1 char_cursor#10 ] )
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[44] return [ print_ln::$0 ] ( main:2::print_ln:35 [ main::i#10 print_ln::$0 ] )
[42] return [ line_cursor#1 ] ( main:2::print_ln:33 [ main::i#10 line_cursor#1 ] )
to:@return
print_word: scope:[print_word] from main::@14
[45] (byte~) print_word::$0 ← > (word) print_word::w#0 [ char_cursor#32 print_word::w#0 print_word::$0 ] ( main:2::print_word:33 [ main::i#10 line_cursor#13 char_cursor#32 print_word::w#0 print_word::$0 ] )
[46] (byte) print_byte::b#0 ← (byte~) print_word::$0 [ char_cursor#32 print_word::w#0 print_byte::b#0 ] ( main:2::print_word:33 [ main::i#10 line_cursor#13 char_cursor#32 print_word::w#0 print_byte::b#0 ] )
[47] call print_byte param-assignment [ print_word::w#0 char_cursor#10 ] ( main:2::print_word:33 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] )
[43] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ char_cursor#32 print_word::w#0 print_byte::b#0 ] ( main:2::print_word:31 [ main::i#10 line_cursor#13 char_cursor#32 print_word::w#0 print_byte::b#0 ] )
[44] call print_byte param-assignment [ print_word::w#0 char_cursor#10 ] ( main:2::print_word:31 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] )
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[48] (byte~) print_word::$2 ← < (word) print_word::w#0 [ char_cursor#10 print_word::$2 ] ( main:2::print_word:33 [ main::i#10 line_cursor#13 char_cursor#10 print_word::$2 ] )
[49] (byte) print_byte::b#1 ← (byte~) print_word::$2 [ char_cursor#10 print_byte::b#1 ] ( main:2::print_word:33 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#1 ] )
[50] call print_byte param-assignment [ char_cursor#10 ] ( main:2::print_word:33 [ main::i#10 line_cursor#13 char_cursor#10 ] )
[45] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ char_cursor#10 print_byte::b#1 ] ( main:2::print_word:31 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#1 ] )
[46] call print_byte param-assignment [ char_cursor#10 ] ( main:2::print_word:31 [ main::i#10 line_cursor#13 char_cursor#10 ] )
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[51] return [ char_cursor#10 ] ( main:2::print_word:33 [ main::i#10 line_cursor#13 char_cursor#10 ] )
[47] return [ char_cursor#10 ] ( main:2::print_word:31 [ main::i#10 line_cursor#13 char_cursor#10 ] )
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[52] (byte*) char_cursor#31 ← phi( print_word/(byte*) char_cursor#32 print_word::@1/(byte*) char_cursor#10 ) [ print_byte::b#2 char_cursor#31 ] ( main:2::print_word:33::print_byte:47 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 ] main:2::print_word:33::print_byte:50 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 ] )
[52] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#31 ] ( main:2::print_word:33::print_byte:47 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 ] main:2::print_word:33::print_byte:50 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 ] )
[53] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#31 print_byte::$0 ] ( main:2::print_word:33::print_byte:47 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_byte::$0 ] main:2::print_word:33::print_byte:50 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_byte::$0 ] )
[54] (byte~) print_byte::$1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 [ print_byte::b#2 char_cursor#31 print_byte::$1 ] ( main:2::print_word:33::print_byte:47 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_byte::$1 ] main:2::print_word:33::print_byte:50 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_byte::$1 ] )
[55] (byte) print_char::ch#0 ← (byte~) print_byte::$1 [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:33::print_byte:47 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:33::print_byte:50 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] )
[56] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::print_word:33::print_byte:47 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::b#2 ] main:2::print_word:33::print_byte:50 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#2 ] )
[48] (byte*) char_cursor#31 ← phi( print_word/(byte*) char_cursor#32 print_word::@1/(byte*) char_cursor#10 ) [ print_byte::b#2 char_cursor#31 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 ] )
[48] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#31 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 ] )
[49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_byte::$0 ] )
[50] (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] )
[51] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#2 ] )
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[57] (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$3 ] ( main:2::print_word:33::print_byte:47 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$3 ] main:2::print_word:33::print_byte:50 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$3 ] )
[58] (byte~) print_byte::$4 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 [ char_cursor#10 print_byte::$4 ] ( main:2::print_word:33::print_byte:47 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$4 ] main:2::print_word:33::print_byte:50 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$4 ] )
[59] (byte) print_char::ch#1 ← (byte~) print_byte::$4 [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:33::print_byte:47 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:33::print_byte:50 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] )
[60] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_word:33::print_byte:47 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:33::print_byte:50 [ main::i#10 line_cursor#13 char_cursor#10 ] )
[52] (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$3 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$3 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$3 ] )
[53] (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] )
[54] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] )
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[61] return [ char_cursor#10 ] ( main:2::print_word:33::print_byte:47 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:33::print_byte:50 [ main::i#10 line_cursor#13 char_cursor#10 ] )
[55] return [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] )
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1
[62] (byte*) char_cursor#23 ← phi( print_byte/(byte*) char_cursor#31 print_byte::@1/(byte*) char_cursor#10 ) [ print_char::ch#2 char_cursor#23 ] ( main:2::print_word:33::print_byte:47::print_char:56 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 print_char::ch#2 char_cursor#23 ] main:2::print_word:33::print_byte:50::print_char:56 [ main::i#10 line_cursor#13 print_byte::b#2 print_char::ch#2 char_cursor#23 ] main:2::print_word:33::print_byte:47::print_char:60 [ main::i#10 line_cursor#13 print_word::w#0 print_char::ch#2 char_cursor#23 ] main:2::print_word:33::print_byte:50::print_char:60 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#23 ] )
[62] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#23 ] ( main:2::print_word:33::print_byte:47::print_char:56 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 print_char::ch#2 char_cursor#23 ] main:2::print_word:33::print_byte:50::print_char:56 [ main::i#10 line_cursor#13 print_byte::b#2 print_char::ch#2 char_cursor#23 ] main:2::print_word:33::print_byte:47::print_char:60 [ main::i#10 line_cursor#13 print_word::w#0 print_char::ch#2 char_cursor#23 ] main:2::print_word:33::print_byte:50::print_char:60 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#23 ] )
[63] *((byte*) char_cursor#23) ← (byte) print_char::ch#2 [ char_cursor#23 ] ( main:2::print_word:33::print_byte:47::print_char:56 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#23 ] main:2::print_word:33::print_byte:50::print_char:56 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#23 ] main:2::print_word:33::print_byte:47::print_char:60 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#23 ] main:2::print_word:33::print_byte:50::print_char:60 [ main::i#10 line_cursor#13 char_cursor#23 ] )
[64] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#23 [ char_cursor#10 ] ( main:2::print_word:33::print_byte:47::print_char:56 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#10 ] main:2::print_word:33::print_byte:50::print_char:56 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#10 ] main:2::print_word:33::print_byte:47::print_char:60 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:33::print_byte:50::print_char:60 [ main::i#10 line_cursor#13 char_cursor#10 ] )
[56] (byte*) char_cursor#23 ← phi( print_byte/(byte*) char_cursor#31 print_byte::@1/(byte*) char_cursor#10 ) [ print_char::ch#2 char_cursor#23 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 print_char::ch#2 char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 line_cursor#13 print_byte::b#2 print_char::ch#2 char_cursor#23 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 line_cursor#13 print_word::w#0 print_char::ch#2 char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#23 ] )
[56] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#23 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 print_char::ch#2 char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 line_cursor#13 print_byte::b#2 print_char::ch#2 char_cursor#23 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 line_cursor#13 print_word::w#0 print_char::ch#2 char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#23 ] )
[57] *((byte*) char_cursor#23) ← (byte) print_char::ch#2 [ char_cursor#23 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#23 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 line_cursor#13 char_cursor#23 ] )
[58] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#23 [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#10 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#10 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 line_cursor#13 char_cursor#10 ] )
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[65] return [ char_cursor#10 ] ( main:2::print_word:33::print_byte:47::print_char:56 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#10 ] main:2::print_word:33::print_byte:50::print_char:56 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#10 ] main:2::print_word:33::print_byte:47::print_char:60 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:33::print_byte:50::print_char:60 [ main::i#10 line_cursor#13 char_cursor#10 ] )
[59] return [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#10 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#10 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 line_cursor#13 char_cursor#10 ] )
to:@return
getFAC: scope:[getFAC] from main::@13
asm { jsr$b1aasty$festa$ff }
[67] (word) getFAC::w#1 ← (byte/signed byte/word/signed word) 0 lo= *((const byte*) memLo#0) [ getFAC::w#1 ] ( main:2::getFAC:29 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::w#1 ] )
[68] (word) getFAC::return#0 ← (word) getFAC::w#1 hi= *((const byte*) memHi#0) [ getFAC::return#0 ] ( main:2::getFAC:29 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] )
[61] (word) getFAC::w#1 ← (byte/signed byte/word/signed word) 0 lo= *((const byte*) memLo#0) [ getFAC::w#1 ] ( main:2::getFAC:28 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::w#1 ] )
[62] (word) getFAC::return#0 ← (word) getFAC::w#1 hi= *((const byte*) memHi#0) [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] )
to:getFAC::@return
getFAC::@return: scope:[getFAC] from getFAC
[69] return [ getFAC::return#0 ] ( main:2::getFAC:29 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] )
[63] return [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] )
to:@return
addMEMtoFAC: scope:[addMEMtoFAC] from main::@12
[70] phi() [ ] ( main:2::addMEMtoFAC:27 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[71] call prepareMEM param-assignment [ ] ( main:2::addMEMtoFAC:27 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[64] phi() [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[65] call prepareMEM param-assignment [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:addMEMtoFAC::@1
addMEMtoFAC::@1: scope:[addMEMtoFAC] from addMEMtoFAC
asm { lda$feldy$ffjsr$b867 }
to:addMEMtoFAC::@return
addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC::@1
[73] return [ ] ( main:2::addMEMtoFAC:27 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[67] return [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:@return
prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC
[74] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(const byte[]) main::f_127#0 divMEMbyFAC/(const byte[]) main::f_i#0 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:27::prepareMEM:71 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:15::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:25::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:21::prepareMEM:88 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:94 [ prepareMEM::mem#5 ] main:2::setFAC:13::prepareMEM:94 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:19::prepareMEM:94 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:99 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:17::prepareMEM:99 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
[75] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::addMEMtoFAC:27::prepareMEM:71 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:15::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:25::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::divMEMbyFAC:21::prepareMEM:88 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:5::prepareMEM:94 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:13::prepareMEM:94 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:19::prepareMEM:94 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:9::prepareMEM:99 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:17::prepareMEM:99 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] )
[76] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:27::prepareMEM:71 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:15::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:25::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:21::prepareMEM:88 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:94 [ prepareMEM::mem#5 ] main:2::setFAC:13::prepareMEM:94 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:19::prepareMEM:94 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:99 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:17::prepareMEM:99 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
[77] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::addMEMtoFAC:27::prepareMEM:71 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:15::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:25::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::divMEMbyFAC:21::prepareMEM:88 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:5::prepareMEM:94 [ prepareMEM::$1 ] main:2::setFAC:13::prepareMEM:94 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:19::prepareMEM:94 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setMEMtoFAC:9::prepareMEM:99 [ prepareMEM::$1 ] main:2::setMEMtoFAC:17::prepareMEM:99 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] )
[78] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::addMEMtoFAC:27::prepareMEM:71 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:15::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:25::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::divMEMbyFAC:21::prepareMEM:88 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:5::prepareMEM:94 [ ] main:2::setFAC:13::prepareMEM:94 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:19::prepareMEM:94 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setMEMtoFAC:9::prepareMEM:99 [ ] main:2::setMEMtoFAC:17::prepareMEM:99 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[68] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(const byte[]) main::f_127#0 divMEMbyFAC/(const byte[]) main::f_i#0 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:26::prepareMEM:65 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:14::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:24::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:20::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:87 [ prepareMEM::mem#5 ] main:2::setFAC:12::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:18::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:92 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:16::prepareMEM:92 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
[69] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::addMEMtoFAC:26::prepareMEM:65 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:14::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:24::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::divMEMbyFAC:20::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:5::prepareMEM:87 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:12::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:18::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:9::prepareMEM:92 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:16::prepareMEM:92 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] )
[70] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:26::prepareMEM:65 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:14::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:24::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:20::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:87 [ prepareMEM::mem#5 ] main:2::setFAC:12::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:18::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:92 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:16::prepareMEM:92 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
[71] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::addMEMtoFAC:26::prepareMEM:65 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:14::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:24::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::divMEMbyFAC:20::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:5::prepareMEM:87 [ prepareMEM::$1 ] main:2::setFAC:12::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:18::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setMEMtoFAC:9::prepareMEM:92 [ prepareMEM::$1 ] main:2::setMEMtoFAC:16::prepareMEM:92 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] )
[72] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::addMEMtoFAC:26::prepareMEM:65 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:14::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::divMEMbyFAC:20::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:5::prepareMEM:87 [ ] main:2::setFAC:12::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setMEMtoFAC:9::prepareMEM:92 [ ] main:2::setMEMtoFAC:16::prepareMEM:92 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:prepareMEM::@return
prepareMEM::@return: scope:[prepareMEM] from prepareMEM
[79] return [ ] ( main:2::addMEMtoFAC:27::prepareMEM:71 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:15::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:25::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::divMEMbyFAC:21::prepareMEM:88 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:5::prepareMEM:94 [ ] main:2::setFAC:13::prepareMEM:94 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:19::prepareMEM:94 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setMEMtoFAC:9::prepareMEM:99 [ ] main:2::setMEMtoFAC:17::prepareMEM:99 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[73] return [ ] ( main:2::addMEMtoFAC:26::prepareMEM:65 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:14::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::divMEMbyFAC:20::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:5::prepareMEM:87 [ ] main:2::setFAC:12::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setMEMtoFAC:9::prepareMEM:92 [ ] main:2::setMEMtoFAC:16::prepareMEM:92 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:@return
mulFACbyMEM: scope:[mulFACbyMEM] from main::@11 main::@6
[80] (byte*) mulFACbyMEM::mem#2 ← phi( main::@11/(const byte[]) main::f_127#0 main::@6/(const byte*) main::f_2pi#0 ) [ mulFACbyMEM::mem#2 ] ( main:2::mulFACbyMEM:15 [ main::i#10 char_cursor#32 line_cursor#13 mulFACbyMEM::mem#2 ] main:2::mulFACbyMEM:25 [ main::i#10 char_cursor#32 line_cursor#13 mulFACbyMEM::mem#2 ] )
[81] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::mulFACbyMEM:15 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] main:2::mulFACbyMEM:25 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] )
[82] call prepareMEM param-assignment [ ] ( main:2::mulFACbyMEM:15 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:25 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[74] (byte*) mulFACbyMEM::mem#2 ← phi( main::@11/(const byte[]) main::f_127#0 main::@6/(const byte*) main::f_2pi#0 ) [ mulFACbyMEM::mem#2 ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 mulFACbyMEM::mem#2 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 mulFACbyMEM::mem#2 ] )
[75] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] )
[76] call prepareMEM param-assignment [ ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:mulFACbyMEM::@1
mulFACbyMEM::@1: scope:[mulFACbyMEM] from mulFACbyMEM
asm { lda$feldy$ffjsr$ba28 }
to:mulFACbyMEM::@return
mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM::@1
[84] return [ ] ( main:2::mulFACbyMEM:15 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:25 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[78] return [ ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:@return
sinFAC: scope:[sinFAC] from main::@10
asm { jsr$e26b }
to:sinFAC::@return
sinFAC::@return: scope:[sinFAC] from sinFAC
[86] return [ ] ( main:2::sinFAC:23 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[80] return [ ] ( main:2::sinFAC:22 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:@return
divMEMbyFAC: scope:[divMEMbyFAC] from main::@9
[87] phi() [ ] ( main:2::divMEMbyFAC:21 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[88] call prepareMEM param-assignment [ ] ( main:2::divMEMbyFAC:21 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[81] phi() [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[82] call prepareMEM param-assignment [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:divMEMbyFAC::@1
divMEMbyFAC::@1: scope:[divMEMbyFAC] from divMEMbyFAC
asm { lda$feldy$ffjsr$bb0f }
to:divMEMbyFAC::@return
divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC::@1
[90] return [ ] ( main:2::divMEMbyFAC:21 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[84] return [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:@return
setFAC: scope:[setFAC] from main main::@1 main::@8
[91] (word) setFAC::w#3 ← phi( main/(word/signed word) 1275 main::@1/(word) setFAC::w#1 main::@8/(byte/signed byte/word/signed word) 25 ) [ setFAC::w#3 ] ( main:2::setFAC:5 [ setFAC::w#3 ] main:2::setFAC:13 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#3 ] main:2::setFAC:19 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#3 ] )
[92] (byte*~) setFAC::$0 ← ((byte*)) (word) setFAC::w#3 [ setFAC::$0 ] ( main:2::setFAC:5 [ setFAC::$0 ] main:2::setFAC:13 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::$0 ] main:2::setFAC:19 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::$0 ] )
[93] (byte*) prepareMEM::mem#0 ← (byte*~) setFAC::$0 [ prepareMEM::mem#0 ] ( main:2::setFAC:5 [ prepareMEM::mem#0 ] main:2::setFAC:13 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] main:2::setFAC:19 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] )
[94] call prepareMEM param-assignment [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:13 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:19 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[85] (word) setFAC::w#3 ← phi( main/(word/signed word) 1275 main::@1/(word) setFAC::w#1 main::@8/(byte/signed byte/word/signed word) 25 ) [ setFAC::w#3 ] ( main:2::setFAC:5 [ setFAC::w#3 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#3 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#3 ] )
[86] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#3 [ prepareMEM::mem#0 ] ( main:2::setFAC:5 [ prepareMEM::mem#0 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] )
[87] call prepareMEM param-assignment [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:setFAC::@1
setFAC::@1: scope:[setFAC] from setFAC
asm { ldy$felda$ffjsr$b391 }
to:setFAC::@return
setFAC::@return: scope:[setFAC] from setFAC::@1
[96] return [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:13 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:19 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[89] return [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:@return
setMEMtoFAC: scope:[setMEMtoFAC] from main::@4 main::@7
[97] (byte*) setMEMtoFAC::mem#2 ← phi( main::@4/(const byte[]) main::f_127#0 main::@7/(const byte[]) main::f_i#0 ) [ setMEMtoFAC::mem#2 ] ( main:2::setMEMtoFAC:9 [ setMEMtoFAC::mem#2 ] main:2::setMEMtoFAC:17 [ main::i#10 char_cursor#32 line_cursor#13 setMEMtoFAC::mem#2 ] )
[98] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 [ prepareMEM::mem#1 ] ( main:2::setMEMtoFAC:9 [ prepareMEM::mem#1 ] main:2::setMEMtoFAC:17 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#1 ] )
[99] call prepareMEM param-assignment [ ] ( main:2::setMEMtoFAC:9 [ ] main:2::setMEMtoFAC:17 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[90] (byte*) setMEMtoFAC::mem#2 ← phi( main::@4/(const byte[]) main::f_127#0 main::@7/(const byte[]) main::f_i#0 ) [ setMEMtoFAC::mem#2 ] ( main:2::setMEMtoFAC:9 [ setMEMtoFAC::mem#2 ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 setMEMtoFAC::mem#2 ] )
[91] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 [ prepareMEM::mem#1 ] ( main:2::setMEMtoFAC:9 [ prepareMEM::mem#1 ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#1 ] )
[92] call prepareMEM param-assignment [ ] ( main:2::setMEMtoFAC:9 [ ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:setMEMtoFAC::@1
setMEMtoFAC::@1: scope:[setMEMtoFAC] from setMEMtoFAC
asm { ldx$feldy$ffjsr$bbd4 }
to:setMEMtoFAC::@return
setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC::@1
[101] return [ ] ( main:2::setMEMtoFAC:9 [ ] main:2::setMEMtoFAC:17 [ main::i#10 char_cursor#32 line_cursor#13 ] )
[94] return [ ] ( main:2::setMEMtoFAC:9 [ ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:@return
divFACby10: scope:[divFACby10] from main::@3
asm { jsr$bafe }
to:divFACby10::@return
divFACby10::@return: scope:[divFACby10] from divFACby10
[103] return [ ] ( main:2::divFACby10:7 [ ] )
[96] return [ ] ( main:2::divFACby10:7 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -6,10 +6,10 @@
(label) addMEMtoFAC::@return
(byte*) addMEMtoFAC::mem
(byte*) char_cursor
(byte*) char_cursor#10 char_cursor zp ZP_WORD:5 5.631578947368422
(byte*) char_cursor#10 char_cursor zp ZP_WORD:5 6.2941176470588225
(byte*) char_cursor#23 char_cursor zp ZP_WORD:5 4.0
(byte*) char_cursor#31 char_cursor zp ZP_WORD:5 1.5
(byte*) char_cursor#32 char_cursor zp ZP_WORD:5 0.52
(byte*) char_cursor#31 char_cursor zp ZP_WORD:5 2.0
(byte*) char_cursor#32 char_cursor zp ZP_WORD:5 0.5909090909090909
(byte*~) char_cursor#48 char_cursor zp ZP_WORD:5 22.0
(void()) divFACby10()
(label) divFACby10::@return
@ -25,11 +25,10 @@
(word) getFAC::w
(word) getFAC::w#1 w zp ZP_WORD:9 4.0
(byte*) line_cursor
(byte*) line_cursor#13 line_cursor zp ZP_WORD:3 0.5
(byte*) line_cursor#1 line_cursor zp ZP_WORD:3 46.42857142857143
(byte*) line_cursor#13 line_cursor zp ZP_WORD:3 0.5416666666666666
(byte*) line_cursor#6 line_cursor zp ZP_WORD:3 204.0
(void()) main()
(word~) main::$12 $12 zp ZP_WORD:9 22.0
(word~) main::$3 $3 zp ZP_WORD:9 22.0
(label) main::@1
(label) main::@10
(label) main::@11
@ -54,7 +53,7 @@
(const byte[]) main::f_i#0 f_i = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0 }
(byte) main::i
(byte) main::i#1 i zp ZP_BYTE:2 11.0
(byte) main::i#10 i zp ZP_BYTE:2 1.2692307692307692
(byte) main::i#10 i zp ZP_BYTE:2 1.375
(byte*) memHi
(const byte*) memHi#0 memHi = ((byte*))(byte/word/signed word) 255
(byte*) memLo
@ -75,15 +74,13 @@
(byte*) prepareMEM::mem#5 mem zp ZP_WORD:7 3.333333333333333
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte y 4.0
(byte~) print_byte::$1 reg byte a 4.0
(byte~) print_byte::$3 reg byte a 4.0
(byte~) print_byte::$4 reg byte a 4.0
(label) print_byte::@1
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#0 reg byte x 4.0
(byte) print_byte::b#1 reg byte x 4.0
(byte) print_byte::b#2 reg byte x 1.6
(byte) print_byte::b#2 reg byte x 2.0
(byte[]) print_byte::hextab
(const byte[]) print_byte::hextab#0 hextab = { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' }
(void()) print_char((byte) print_char::ch)
@ -93,18 +90,14 @@
(byte) print_char::ch#1 reg byte a 4.0
(byte) print_char::ch#2 reg byte a 6.0
(void()) print_ln()
(byte*~) print_ln::$0 $0 zp ZP_WORD:3 46.42857142857143
(label) print_ln::@1
(label) print_ln::@return
(void()) print_word((word) print_word::w)
(byte~) print_word::$0 reg byte a 4.0
(byte~) print_word::$2 reg byte a 4.0
(label) print_word::@1
(label) print_word::@return
(word) print_word::w
(word) print_word::w#0 w zp ZP_WORD:9 3.75
(word) print_word::w#0 w zp ZP_WORD:9 5.0
(void()) setFAC((word) setFAC::w)
(byte*~) setFAC::$0 $0 zp ZP_WORD:7 4.0
(label) setFAC::@1
(label) setFAC::@return
(word) setFAC::w
@ -119,17 +112,13 @@
(label) sinFAC::@return
zp ZP_BYTE:2 [ main::i#10 main::i#1 ]
zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 print_ln::$0 ]
zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ]
reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
zp ZP_WORD:5 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ]
zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setMEMtoFAC::mem#2 setFAC::$0 ]
zp ZP_WORD:9 [ setFAC::w#3 setFAC::w#1 main::$3 getFAC::return#2 main::$12 print_word::w#0 getFAC::w#1 getFAC::return#0 ]
reg byte a [ print_word::$0 ]
reg byte a [ print_word::$2 ]
zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setMEMtoFAC::mem#2 ]
zp ZP_WORD:9 [ setFAC::w#3 setFAC::w#1 getFAC::return#2 print_word::w#0 getFAC::w#1 getFAC::return#0 ]
reg byte y [ print_byte::$0 ]
reg byte a [ print_byte::$1 ]
reg byte a [ print_byte::$3 ]
reg byte a [ print_byte::$4 ]
reg byte a [ prepareMEM::$0 ]
reg byte a [ prepareMEM::$1 ]

View File

@ -1,21 +1,21 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.const memLo = $fe
.const memHi = $ff
.const PROCPORT = 1
.const CHARGEN = $d000
.const SCREEN = $400
.const COLS = $d800
.const RASTER = $d012
.const BORDERCOL = $d020
.const SPRITES_XPOS = $d000
.const SPRITES_YPOS = $d001
.const SPRITES_XMSB = $d010
.const RASTER = $d012
.const SPRITES_ENABLE = $d015
.const SPRITES_EXPAND_Y = $d017
.const SPRITES_EXPAND_X = $d01d
.const BORDERCOL = $d020
.const SPRITES_COLS = $d027
.const COLS = $d800
.const memLo = $fe
.const memHi = $ff
.const SCREEN = $400
.const sinlen_x = $dd
.const sintab_x = $1000
.const sinlen_y = $c5
@ -193,28 +193,24 @@ clear_screen: {
}
gen_sintab: {
.const f_2pi = $e2e5
.label _0 = $e
.label _3 = $e
.label _13 = $e
.label _17 = $e
.label _23 = $e
.label i = 2
.label min = 2
.label length = 3
.label sintab = 8
txa
sta _0
sta setFAC.w
lda #0
sta _0+1
sta setFAC.w+1
jsr setFAC
jsr setARGtoFAC
lda #0
tax
tay
lda min
sta _3
sta setFAC.w
txa
sta _3+1
sta setFAC.w+1
jsr setFAC
lda #<f_min
sta setMEMtoFAC.mem
@ -257,9 +253,9 @@ gen_sintab: {
sta i
b1:
lda i
sta _13
sta setFAC.w
lda #0
sta _13+1
sta setFAC.w+1
jsr setFAC
lda #<f_2pi
sta mulFACbyMEM.mem
@ -272,9 +268,9 @@ gen_sintab: {
sta setMEMtoFAC.mem+1
jsr setMEMtoFAC
lda length
sta _17
sta setFAC.w
lda #0
sta _17+1
sta setFAC.w+1
jsr setFAC
lda #<f_i
sta divMEMbyFAC.mem
@ -379,12 +375,11 @@ divMEMbyFAC: {
rts
}
setFAC: {
.label _0 = $c
.label w = $e
lda w
sta _0
sta prepareMEM.mem
lda w+1
sta _0+1
sta prepareMEM.mem+1
jsr prepareMEM
ldy $fe
lda $ff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -138,12 +138,8 @@
(byte) gen_chargen_sprite::y#1 y zp ZP_BYTE:3 151.5
(byte) gen_chargen_sprite::y#2 y zp ZP_BYTE:3 13.173913043478262
(void()) gen_sintab((byte*) gen_sintab::sintab , (byte) gen_sintab::length , (byte) gen_sintab::min , (byte) gen_sintab::max)
(word~) gen_sintab::$0 $0 zp ZP_WORD:14 4.0
(word~) gen_sintab::$13 $13 zp ZP_WORD:14 22.0
(word~) gen_sintab::$17 $17 zp ZP_WORD:14 22.0
(word~) gen_sintab::$23 $23 zp ZP_WORD:14 22.0
(byte~) gen_sintab::$24 reg byte a 22.0
(word~) gen_sintab::$3 $3 zp ZP_WORD:14 4.0
(label) gen_sintab::@1
(label) gen_sintab::@10
(label) gen_sintab::@11
@ -176,17 +172,16 @@
(const byte[]) gen_sintab::f_min#0 f_min = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0 }
(byte) gen_sintab::i
(byte) gen_sintab::i#1 i zp ZP_BYTE:2 16.5
(byte) gen_sintab::i#10 i zp ZP_BYTE:2 1.6923076923076923
(byte) gen_sintab::i#10 i zp ZP_BYTE:2 1.8333333333333333
(byte) gen_sintab::length
(byte) gen_sintab::length#10 length zp ZP_BYTE:3 0.4074074074074074
(byte) gen_sintab::length#10 length zp ZP_BYTE:3 0.44
(byte) gen_sintab::max
(byte) gen_sintab::max#2 reg byte x 2.0
(byte) gen_sintab::min
(byte) gen_sintab::min#2 min zp ZP_BYTE:2 0.2857142857142857
(byte) gen_sintab::min#2 min zp ZP_BYTE:2 0.3333333333333333
(byte*) gen_sintab::sintab
(byte*) gen_sintab::sintab#12 sintab zp ZP_WORD:8 0.2037037037037037
(byte*) gen_sintab::sintab#12 sintab zp ZP_WORD:8 0.22
(void()) gen_sprites()
(byte~) gen_sprites::$0 reg byte a 22.0
(label) gen_sprites::@1
(label) gen_sprites::@3
(label) gen_sprites::@return
@ -194,10 +189,10 @@
(const byte[]) gen_sprites::cml#0 cml = (string) "camelot"
(byte) gen_sprites::i
(byte) gen_sprites::i#1 i zp ZP_BYTE:2 16.5
(byte) gen_sprites::i#2 i zp ZP_BYTE:2 5.5
(byte) gen_sprites::i#2 i zp ZP_BYTE:2 6.6000000000000005
(byte*) gen_sprites::spr
(byte*) gen_sprites::spr#1 spr zp ZP_WORD:8 7.333333333333333
(byte*) gen_sprites::spr#2 spr zp ZP_WORD:8 6.6000000000000005
(byte*) gen_sprites::spr#2 spr zp ZP_WORD:8 8.25
(word()) getFAC()
(label) getFAC::@return
(word) getFAC::return
@ -267,11 +262,11 @@
(byte*) progress_cursor
(byte*) progress_cursor#10 progress_cursor zp ZP_WORD:10 4.0
(byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.4285714285714284
(byte*) progress_cursor#34 progress_cursor zp ZP_WORD:10 0.6551724137931035
(byte*) progress_cursor#34 progress_cursor zp ZP_WORD:10 0.7037037037037037
(byte) progress_idx
(byte) progress_idx#10 progress_idx zp ZP_BYTE:4 3.0
(byte) progress_idx#12 progress_idx zp ZP_BYTE:4 2.142857142857143
(byte) progress_idx#34 progress_idx zp ZP_BYTE:4 0.52
(byte) progress_idx#34 progress_idx zp ZP_BYTE:4 0.5652173913043479
(void()) progress_inc()
(byte~) progress_inc::$2 reg byte a 4.0
(byte~) progress_inc::$3 reg byte a 4.0
@ -283,11 +278,10 @@
(void()) progress_init((byte*) progress_init::line)
(label) progress_init::@return
(byte*) progress_init::line
(byte*) progress_init::line#2 line zp ZP_WORD:10 0.0625
(byte*) progress_init::line#2 line zp ZP_WORD:10 0.06666666666666667
(void()) setARGtoFAC()
(label) setARGtoFAC::@return
(void()) setFAC((word) setFAC::w)
(byte*~) setFAC::$0 $0 zp ZP_WORD:12 4.0
(label) setFAC::@1
(label) setFAC::@return
(word) setFAC::w
@ -335,8 +329,8 @@ reg byte x [ init::i#2 init::i#1 ]
zp ZP_WORD:8 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 ]
reg byte x [ gen_sintab::max#2 ]
zp ZP_WORD:10 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ]
zp ZP_WORD:12 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setMEMtoFAC::mem#5 setFAC::$0 gen_chargen_sprite::chargen#0 ]
zp ZP_WORD:14 [ setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 anim::x#0 gen_sintab::$0 gen_sintab::$3 gen_sintab::$13 gen_sintab::$17 getFAC::return#2 gen_sintab::$23 getFAC::w#1 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 ]
zp ZP_WORD:12 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setMEMtoFAC::mem#5 gen_chargen_sprite::chargen#0 ]
zp ZP_WORD:14 [ setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 anim::x#0 getFAC::return#2 gen_sintab::$23 getFAC::w#1 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 ]
reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ]
reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
reg byte y [ place_sprites::j#2 place_sprites::j#1 ]
@ -351,7 +345,6 @@ reg byte a [ progress_inc::$2 ]
reg byte a [ progress_inc::$3 ]
reg byte a [ prepareMEM::$0 ]
reg byte a [ prepareMEM::$1 ]
reg byte a [ gen_sprites::$0 ]
reg byte x [ gen_chargen_sprite::ch#0 ]
reg byte a [ gen_chargen_sprite::$4 ]
reg byte a [ gen_chargen_sprite::$7 ]

View File

@ -156,7 +156,7 @@ findcol::@16: scope:[findcol] from findcol::@7
[82] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] )
to:findcol::@8
findcol::@8: scope:[findcol] from findcol::@16 findcol::@21
[83] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@21/(byte~) findcol::mindiff#14 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] )
[83] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@21/(byte~) findcol::mindiff#15 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] )
[83] (byte) findcol::mincol#2 ← phi( findcol::@16/(byte) findcol::mincol#1 findcol::@21/(byte) findcol::mincol#10 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] )
[84] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] )
[85] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] )
@ -165,7 +165,7 @@ findcol::@19: scope:[findcol] from findcol::@8
[86] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] )
to:findcol::@1
findcol::@21: scope:[findcol] from findcol::@7
[87] (byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] )
[87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] )
to:findcol::@8
findcol::@6: scope:[findcol] from findcol::@5
[88] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] )

View File

@ -6436,7 +6436,7 @@ findcol::@9: scope:[findcol] from findcol::@1
if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2
to:findcol::@return
findcol::@return: scope:[findcol] from findcol::@20 findcol::@9
(byte) findcol::return#2 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@20/(byte~) findcol::mincol#15 )
(byte) findcol::return#2 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@20/(byte~) findcol::return#6 )
return
to:@return
findcol::@2: scope:[findcol] from findcol::@1 findcol::@9
@ -6461,17 +6461,17 @@ findcol::@7: scope:[findcol] from findcol::@14 findcol::@6
to:findcol::@16
findcol::@16: scope:[findcol] from findcol::@7
(byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10
(byte~) findcol::mincol#16 ← (byte) findcol::mincol#1
(byte~) findcol::diff#13 ← (byte) findcol::diff#6
(byte~) findcol::mincol#15 ← (byte) findcol::mincol#1
(byte~) findcol::mindiff#14 ← (byte) findcol::diff#6
to:findcol::@8
findcol::@8: scope:[findcol] from findcol::@16 findcol::@21
(byte) findcol::mindiff#11 ← phi( findcol::@16/(byte~) findcol::diff#13 findcol::@21/(byte~) findcol::mindiff#14 )
(byte) findcol::mincol#2 ← phi( findcol::@16/(byte~) findcol::mincol#16 findcol::@21/(byte~) findcol::mincol#17 )
(byte) findcol::mindiff#11 ← phi( findcol::@16/(byte~) findcol::mindiff#14 findcol::@21/(byte~) findcol::mindiff#15 )
(byte) findcol::mincol#2 ← phi( findcol::@16/(byte~) findcol::mincol#15 findcol::@21/(byte~) findcol::mincol#16 )
(byte) findcol::i#1 ← ++ (byte) findcol::i#10
if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19
to:findcol::@20
findcol::@20: scope:[findcol] from findcol::@8
(byte~) findcol::mincol#15 ← (byte) findcol::mincol#2
(byte~) findcol::return#6 ← (byte) findcol::mincol#2
to:findcol::@return
findcol::@19: scope:[findcol] from findcol::@8
(byte~) findcol::i#14 ← (byte) findcol::i#1
@ -6479,8 +6479,8 @@ findcol::@19: scope:[findcol] from findcol::@8
(byte~) findcol::mincol#14 ← (byte) findcol::mincol#2
to:findcol::@1
findcol::@21: scope:[findcol] from findcol::@7
(byte~) findcol::mincol#17 ← (byte) findcol::mincol#10
(byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10
(byte~) findcol::mincol#16 ← (byte) findcol::mincol#10
(byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10
to:findcol::@8
findcol::@6: scope:[findcol] from findcol::@5
(byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0
@ -6679,7 +6679,7 @@ findcol::@9: scope:[findcol] from findcol::@1
[74] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ]
to:findcol::@return
findcol::@return: scope:[findcol] from findcol::@20 findcol::@9
[75] (byte) findcol::return#2 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@20/(byte~) findcol::mincol#15 ) [ findcol::return#2 ]
[75] (byte) findcol::return#2 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@20/(byte~) findcol::return#6 ) [ findcol::return#2 ]
[76] return [ findcol::return#2 ]
to:@return
findcol::@2: scope:[findcol] from findcol::@1 findcol::@9
@ -6704,17 +6704,17 @@ findcol::@7: scope:[findcol] from findcol::@14 findcol::@6
to:findcol::@16
findcol::@16: scope:[findcol] from findcol::@7
[87] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ]
[88] (byte~) findcol::mincol#16 ← (byte) findcol::mincol#1 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#16 ]
[89] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#16 findcol::diff#13 ]
[88] (byte~) findcol::mincol#15 ← (byte) findcol::mincol#1 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#15 ]
[89] (byte~) findcol::mindiff#14 ← (byte) findcol::diff#6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#15 findcol::mindiff#14 ]
to:findcol::@8
findcol::@8: scope:[findcol] from findcol::@16 findcol::@21
[90] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte~) findcol::diff#13 findcol::@21/(byte~) findcol::mindiff#14 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ]
[90] (byte) findcol::mincol#2 ← phi( findcol::@16/(byte~) findcol::mincol#16 findcol::@21/(byte~) findcol::mincol#17 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ]
[90] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte~) findcol::mindiff#14 findcol::@21/(byte~) findcol::mindiff#15 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ]
[90] (byte) findcol::mincol#2 ← phi( findcol::@16/(byte~) findcol::mincol#15 findcol::@21/(byte~) findcol::mincol#16 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ]
[91] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 findcol::i#1 ]
[92] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 findcol::i#1 ]
to:findcol::@20
findcol::@20: scope:[findcol] from findcol::@8
[93] (byte~) findcol::mincol#15 ← (byte) findcol::mincol#2 [ findcol::mincol#15 ]
[93] (byte~) findcol::return#6 ← (byte) findcol::mincol#2 [ findcol::return#6 ]
to:findcol::@return
findcol::@19: scope:[findcol] from findcol::@8
[94] (byte~) findcol::i#14 ← (byte) findcol::i#1 [ findcol::x#0 findcol::y#0 findcol::i#14 findcol::mincol#2 findcol::mindiff#11 ]
@ -6722,8 +6722,8 @@ findcol::@19: scope:[findcol] from findcol::@8
[96] (byte~) findcol::mincol#14 ← (byte) findcol::mincol#2 [ findcol::x#0 findcol::y#0 findcol::i#14 findcol::mindiff#13 findcol::mincol#14 ]
to:findcol::@1
findcol::@21: scope:[findcol] from findcol::@7
[97] (byte~) findcol::mincol#17 ← (byte) findcol::mincol#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#17 ]
[98] (byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#17 findcol::mindiff#14 ]
[97] (byte~) findcol::mincol#16 ← (byte) findcol::mincol#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#16 ]
[98] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#16 findcol::mindiff#15 ]
to:findcol::@8
findcol::@6: scope:[findcol] from findcol::@5
[99] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ]
@ -6756,14 +6756,14 @@ Coalesced [67] render::colline#6 ← render::colline#1
Coalesced [68] render::x#4 ← render::x#1
Coalesced [79] findcol::diff#9 ← findcol::diff#1
Coalesced [84] findcol::diff#11 ← findcol::diff#3
Coalesced [88] findcol::mincol#16 ← findcol::mincol#1
Coalesced [89] findcol::diff#13 ← findcol::diff#6
Coalesced [93] findcol::mincol#15 ← findcol::mincol#2
Coalesced [88] findcol::mincol#15 ← findcol::mincol#1
Coalesced [89] findcol::mindiff#14 ← findcol::diff#6
Coalesced [93] findcol::return#6 ← findcol::mincol#2
Coalesced [94] findcol::i#14 ← findcol::i#1
Not coalescing [95] findcol::mindiff#13 ← findcol::mindiff#11
Coalesced [96] findcol::mincol#14 ← findcol::mincol#2
Coalesced (already) [97] findcol::mincol#17 ← findcol::mincol#10
Not coalescing [98] findcol::mindiff#14 ← findcol::mindiff#10
Coalesced (already) [97] findcol::mincol#16 ← findcol::mincol#10
Not coalescing [98] findcol::mindiff#15 ← findcol::mindiff#10
Coalesced [101] findcol::diff#12 ← findcol::diff#2
Coalesced [103] findcol::diff#10 ← findcol::diff#0
Coalesced [110] initscreen::screen#3 ← initscreen::screen#1
@ -6954,7 +6954,7 @@ findcol::@16: scope:[findcol] from findcol::@7
[82] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ]
to:findcol::@8
findcol::@8: scope:[findcol] from findcol::@16 findcol::@21
[83] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@21/(byte~) findcol::mindiff#14 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ]
[83] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@21/(byte~) findcol::mindiff#15 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ]
[83] (byte) findcol::mincol#2 ← phi( findcol::@16/(byte) findcol::mincol#1 findcol::@21/(byte) findcol::mincol#10 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ]
[84] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ]
[85] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ]
@ -6963,7 +6963,7 @@ findcol::@19: scope:[findcol] from findcol::@8
[86] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ]
to:findcol::@1
findcol::@21: scope:[findcol] from findcol::@7
[87] (byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ]
[87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ]
to:findcol::@8
findcol::@6: scope:[findcol] from findcol::@5
[88] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ]
@ -7144,7 +7144,7 @@ findcol::@16: scope:[findcol] from findcol::@7
[82] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] )
to:findcol::@8
findcol::@8: scope:[findcol] from findcol::@16 findcol::@21
[83] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@21/(byte~) findcol::mindiff#14 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] )
[83] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@21/(byte~) findcol::mindiff#15 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] )
[83] (byte) findcol::mincol#2 ← phi( findcol::@16/(byte) findcol::mincol#1 findcol::@21/(byte) findcol::mincol#10 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] )
[84] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] )
[85] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] )
@ -7153,7 +7153,7 @@ findcol::@19: scope:[findcol] from findcol::@8
[86] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] )
to:findcol::@1
findcol::@21: scope:[findcol] from findcol::@7
[87] (byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] )
[87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] )
to:findcol::@8
findcol::@6: scope:[findcol] from findcol::@5
[88] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] )
@ -7306,7 +7306,7 @@ VARIABLE REGISTER WEIGHTS
(byte) findcol::mindiff#10 1875.1875
(byte) findcol::mindiff#11 10001.0
(byte~) findcol::mindiff#13 20002.0
(byte~) findcol::mindiff#14 20002.0
(byte~) findcol::mindiff#15 20002.0
(byte) findcol::return
(byte) findcol::return#0 2002.0
(byte) findcol::return#2 3667.333333333333
@ -7345,7 +7345,7 @@ Initial phi equivalence classes
[ findcol::mindiff#10 findcol::mindiff#13 ]
[ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
[ findcol::diff#4 findcol::diff#1 findcol::diff#0 ]
[ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#14 ]
[ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ]
[ initscreen::screen#2 initscreen::screen#1 ]
Added variable animate::$0 to zero page equivalence class [ animate::$0 ]
Added variable animate::$1 to zero page equivalence class [ animate::$1 ]
@ -7383,7 +7383,7 @@ Complete equivalence classes
[ findcol::mindiff#10 findcol::mindiff#13 ]
[ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
[ findcol::diff#4 findcol::diff#1 findcol::diff#0 ]
[ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#14 ]
[ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ]
[ initscreen::screen#2 initscreen::screen#1 ]
[ animate::$0 ]
[ animate::$1 ]
@ -7420,7 +7420,7 @@ Allocated zp ZP_BYTE:6 [ findcol::i#10 findcol::i#1 ]
Allocated zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ]
Allocated zp ZP_BYTE:8 [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
Allocated zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ]
Allocated zp ZP_BYTE:10 [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#14 ]
Allocated zp ZP_BYTE:10 [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ]
Allocated zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ]
Allocated zp ZP_BYTE:13 [ animate::$0 ]
Allocated zp ZP_BYTE:14 [ animate::$1 ]
@ -7811,7 +7811,7 @@ findcol: {
.label diff_6 = $a
.label mindiff = 7
.label mindiff_11 = $a
.label mindiff_14 = $a
.label mindiff_15 = $a
//SEG104 [67] phi from findcol to findcol::@1 [phi:findcol->findcol::@1]
b1_from_findcol:
//SEG105 [67] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- vbuz1=vbuc1
@ -7942,9 +7942,9 @@ findcol: {
jmp b1
//SEG149 findcol::@21
b21:
//SEG150 [87] (byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ) -- vbuz1=vbuz2
//SEG150 [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuz1=vbuz2
lda mindiff
sta mindiff_14
sta mindiff_15
jmp b8_from_b21
//SEG151 findcol::@6
b6:
@ -8063,7 +8063,7 @@ Potential registers zp ZP_BYTE:6 [ findcol::i#10 findcol::i#1 ] : zp ZP_BYTE:6 ,
Potential registers zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] : zp ZP_BYTE:7 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:8 [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] : zp ZP_BYTE:8 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] : zp ZP_BYTE:9 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:10 [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#14 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:10 [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ] : zp ZP_WORD:11 ,
Potential registers zp ZP_BYTE:13 [ animate::$0 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y , reg byte alu ,
Potential registers zp ZP_BYTE:14 [ animate::$1 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y ,
@ -8095,7 +8095,7 @@ Potential registers zp ZP_BYTE:39 [ findcol::$12 ] : zp ZP_BYTE:39 , reg byte a
Potential registers zp ZP_BYTE:40 [ findcol::$14 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [findcol] 83,341.67: zp ZP_BYTE:10 [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#14 ] 50,005: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] 34,846.92: zp ZP_BYTE:8 [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] 21,877.19: zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] 20,002: zp ZP_BYTE:39 [ findcol::$12 ] 20,002: zp ZP_BYTE:40 [ findcol::$14 ] 12,632.84: zp ZP_BYTE:6 [ findcol::i#10 findcol::i#1 ] 10,001: zp ZP_BYTE:37 [ findcol::xp#0 ] 6,250.62: zp ZP_BYTE:38 [ findcol::yp#0 ] 2,002: zp ZP_BYTE:35 [ findcol::return#0 ] 1,708.54: zp ZP_BYTE:34 [ findcol::y#0 ] 1,640.2: zp ZP_BYTE:33 [ findcol::x#0 ]
Uplift Scope [findcol] 83,341.67: zp ZP_BYTE:10 [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] 50,005: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] 34,846.92: zp ZP_BYTE:8 [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] 21,877.19: zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] 20,002: zp ZP_BYTE:39 [ findcol::$12 ] 20,002: zp ZP_BYTE:40 [ findcol::$14 ] 12,632.84: zp ZP_BYTE:6 [ findcol::i#10 findcol::i#1 ] 10,001: zp ZP_BYTE:37 [ findcol::xp#0 ] 6,250.62: zp ZP_BYTE:38 [ findcol::yp#0 ] 2,002: zp ZP_BYTE:35 [ findcol::return#0 ] 1,708.54: zp ZP_BYTE:34 [ findcol::y#0 ] 1,640.2: zp ZP_BYTE:33 [ findcol::x#0 ]
Uplift Scope [render] 2,073.5: zp ZP_BYTE:5 [ render::x#2 render::x#1 ] 2,002: zp ZP_BYTE:36 [ render::col#0 ] 260.86: zp ZP_BYTE:2 [ render::y#4 render::y#1 ] 187.63: zp ZP_WORD:3 [ render::colline#5 render::colline#1 ]
Uplift Scope [animate] 4: zp ZP_BYTE:13 [ animate::$0 ] 4: zp ZP_BYTE:14 [ animate::$1 ] 4: zp ZP_BYTE:15 [ animate::$2 ] 4: zp ZP_BYTE:16 [ animate::$5 ] 4: zp ZP_BYTE:17 [ animate::$6 ] 4: zp ZP_BYTE:18 [ animate::$7 ] 4: zp ZP_BYTE:19 [ animate::$10 ] 4: zp ZP_BYTE:20 [ animate::$11 ] 4: zp ZP_BYTE:21 [ animate::$12 ] 4: zp ZP_BYTE:22 [ animate::$15 ] 4: zp ZP_BYTE:23 [ animate::$16 ] 4: zp ZP_BYTE:24 [ animate::$17 ] 4: zp ZP_BYTE:25 [ animate::$20 ] 4: zp ZP_BYTE:26 [ animate::$21 ] 4: zp ZP_BYTE:27 [ animate::$22 ] 4: zp ZP_BYTE:28 [ animate::$25 ] 4: zp ZP_BYTE:29 [ animate::$26 ] 4: zp ZP_BYTE:30 [ animate::$27 ] 4: zp ZP_BYTE:31 [ animate::$30 ] 4: zp ZP_BYTE:32 [ animate::$31 ]
Uplift Scope [initscreen] 33: zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ]
@ -8103,7 +8103,7 @@ Uplift Scope [main]
Uplift Scope []
Uplift attempts [findcol] 10000/2239488 (limiting to 10000)
Uplifting [findcol] best 1714313 combination reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#14 ] zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte y [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] reg byte a [ findcol::$12 ] reg byte a [ findcol::$14 ] reg byte x [ findcol::i#10 findcol::i#1 ] zp ZP_BYTE:37 [ findcol::xp#0 ] zp ZP_BYTE:38 [ findcol::yp#0 ] zp ZP_BYTE:35 [ findcol::return#0 ] zp ZP_BYTE:34 [ findcol::y#0 ] zp ZP_BYTE:33 [ findcol::x#0 ]
Uplifting [findcol] best 1714313 combination reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte y [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] reg byte a [ findcol::$12 ] reg byte a [ findcol::$14 ] reg byte x [ findcol::i#10 findcol::i#1 ] zp ZP_BYTE:37 [ findcol::xp#0 ] zp ZP_BYTE:38 [ findcol::yp#0 ] zp ZP_BYTE:35 [ findcol::return#0 ] zp ZP_BYTE:34 [ findcol::y#0 ] zp ZP_BYTE:33 [ findcol::x#0 ]
Limited combination testing to 10000 combinations of 2239488 possible.
Uplifting [render] best 1708313 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ] reg byte a [ render::col#0 ] zp ZP_BYTE:2 [ render::y#4 render::y#1 ] zp ZP_WORD:3 [ render::colline#5 render::colline#1 ]
Uplifting [initscreen] best 1708313 combination zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ]
@ -8577,7 +8577,7 @@ findcol: {
jmp b1
//SEG149 findcol::@21
b21:
//SEG150 [87] (byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ) -- vbuaa=vbuz1
//SEG150 [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuaa=vbuz1
lda mindiff
jmp b8_from_b21
//SEG151 findcol::@6
@ -9011,7 +9011,7 @@ findcol: {
jmp b1
//SEG149 findcol::@21
b21:
//SEG150 [87] (byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ) -- vbuaa=vbuz1
//SEG150 [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuaa=vbuz1
lda mindiff
jmp b8_from_b21
//SEG151 findcol::@6
@ -9448,7 +9448,7 @@ findcol: {
jmp b1
//SEG149 findcol::@21
b21:
//SEG150 [87] (byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ) -- vbuaa=vbuz1
//SEG150 [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuaa=vbuz1
lda mindiff
jmp b8
//SEG151 findcol::@6
@ -9860,7 +9860,7 @@ findcol: {
jmp b1
//SEG149 findcol::@21
b21:
//SEG150 [87] (byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ) -- vbuaa=vbuz1
//SEG150 [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuaa=vbuz1
lda mindiff
jmp b8
//SEG151 findcol::@6
@ -10243,7 +10243,7 @@ findcol: {
jmp b1
//SEG149 findcol::@21
b21:
//SEG150 [87] (byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ) -- vbuaa=vbuz1
//SEG150 [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuaa=vbuz1
lda mindiff
jmp b8
//SEG151 findcol::@6
@ -10626,7 +10626,7 @@ findcol: {
jmp b1
//SEG149 findcol::@21
b21:
//SEG150 [87] (byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ) -- vbuaa=vbuz1
//SEG150 [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuaa=vbuz1
lda mindiff
jmp b8
//SEG151 findcol::@6
@ -11005,7 +11005,7 @@ findcol: {
jmp b1
//SEG149 findcol::@21
b21:
//SEG150 [87] (byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ) -- vbuaa=vbuz1
//SEG150 [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuaa=vbuz1
lda mindiff
jmp b8
//SEG151 findcol::@6
@ -11146,7 +11146,7 @@ FINAL SYMBOL TABLE
(byte) findcol::mindiff#10 mindiff zp ZP_BYTE:6 1875.1875
(byte) findcol::mindiff#11 reg byte a 10001.0
(byte~) findcol::mindiff#13 mindiff zp ZP_BYTE:6 20002.0
(byte~) findcol::mindiff#14 reg byte a 20002.0
(byte~) findcol::mindiff#15 reg byte a 20002.0
(byte) findcol::return
(byte) findcol::return#0 reg byte a 2002.0
(byte) findcol::return#2 reg byte y 3667.333333333333
@ -11196,7 +11196,7 @@ reg byte x [ findcol::i#10 findcol::i#1 ]
zp ZP_BYTE:6 [ findcol::mindiff#10 findcol::mindiff#13 ]
reg byte y [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
zp ZP_BYTE:7 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 findcol::xp#0 ]
reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#14 ]
reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ]
reg byte a [ animate::$0 ]
reg byte a [ animate::$1 ]
reg byte a [ animate::$2 ]
@ -11542,7 +11542,7 @@ findcol: {
jmp b1
//SEG149 findcol::@21
b21:
//SEG150 [87] (byte~) findcol::mindiff#14 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#14 ] ) -- vbuaa=vbuz1
//SEG150 [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuaa=vbuz1
lda mindiff
jmp b8
//SEG151 findcol::@6

View File

@ -80,7 +80,7 @@
(byte) findcol::mindiff#10 mindiff zp ZP_BYTE:6 1875.1875
(byte) findcol::mindiff#11 reg byte a 10001.0
(byte~) findcol::mindiff#13 mindiff zp ZP_BYTE:6 20002.0
(byte~) findcol::mindiff#14 reg byte a 20002.0
(byte~) findcol::mindiff#15 reg byte a 20002.0
(byte) findcol::return
(byte) findcol::return#0 reg byte a 2002.0
(byte) findcol::return#2 reg byte y 3667.333333333333
@ -130,7 +130,7 @@ reg byte x [ findcol::i#10 findcol::i#1 ]
zp ZP_BYTE:6 [ findcol::mindiff#10 findcol::mindiff#13 ]
reg byte y [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
zp ZP_BYTE:7 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 findcol::xp#0 ]
reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#14 ]
reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ]
reg byte a [ animate::$0 ]
reg byte a [ animate::$1 ]
reg byte a [ animate::$2 ]

View File

@ -5,35 +5,35 @@
.const SCREEN2 = $400+$28
jsr main
main: {
ldy #0
ldx #0
b1:
tya
tax
inx
tya
txa
tay
iny
txa
clc
adc #2
sta sum.c
jsr sum
sta SCREEN,y
tya
tax
inx
tya
sta SCREEN,x
txa
tay
iny
txa
clc
adc #2
sta sum2.c
jsr sum2
sta SCREEN2,y
iny
cpy #$b
sta SCREEN2,x
inx
cpx #$b
bne b1
rts
}
sum2: {
.label c = 2
sty $ff
txa
stx $ff
tya
clc
adc $ff
clc
@ -42,8 +42,8 @@ sum2: {
}
sum: {
.label c = 2
sty $ff
txa
stx $ff
tya
clc
adc $ff
clc

View File

@ -12,45 +12,41 @@ main: scope:[main] from @3
to:main::@1
main::@1: scope:[main] from main main::@4
[5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] )
[6] (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] )
[7] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$0 main::$1 ] ( main:2 [ main::i#2 main::$0 main::$1 ] )
[8] (byte) sum::a#0 ← (byte) main::i#2 [ main::i#2 main::$0 main::$1 sum::a#0 ] ( main:2 [ main::i#2 main::$0 main::$1 sum::a#0 ] )
[9] (byte) sum::b#0 ← (byte~) main::$0 [ main::i#2 main::$1 sum::a#0 sum::b#0 ] ( main:2 [ main::i#2 main::$1 sum::a#0 sum::b#0 ] )
[10] (byte) sum::c#0 ← (byte~) main::$1 [ main::i#2 sum::a#0 sum::b#0 sum::c#0 ] ( main:2 [ main::i#2 sum::a#0 sum::b#0 sum::c#0 ] )
[11] call sum param-assignment [ main::i#2 sum::return#1 ] ( main:2 [ main::i#2 sum::return#1 ] )
[12] (byte) sum::return#0 ← (byte) sum::return#1 [ main::i#2 sum::return#0 ] ( main:2 [ main::i#2 sum::return#0 ] )
[6] (byte) sum::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 sum::b#0 ] ( main:2 [ main::i#2 sum::b#0 ] )
[7] (byte) sum::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 sum::b#0 sum::c#0 ] ( main:2 [ main::i#2 sum::b#0 sum::c#0 ] )
[8] (byte) sum::a#0 ← (byte) main::i#2 [ main::i#2 sum::b#0 sum::c#0 sum::a#0 ] ( main:2 [ main::i#2 sum::b#0 sum::c#0 sum::a#0 ] )
[9] call sum param-assignment [ main::i#2 sum::return#1 ] ( main:2 [ main::i#2 sum::return#1 ] )
[10] (byte) sum::return#0 ← (byte) sum::return#1 [ main::i#2 sum::return#0 ] ( main:2 [ main::i#2 sum::return#0 ] )
to:main::@3
main::@3: scope:[main] from main::@1
[13] (byte~) main::$2 ← (byte) sum::return#0 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] )
[14] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] )
[15] (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] )
[16] (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$3 main::$4 ] ( main:2 [ main::i#2 main::$3 main::$4 ] )
[17] (byte) sum2::a#0 ← (byte) main::i#2 [ main::i#2 main::$3 main::$4 sum2::a#0 ] ( main:2 [ main::i#2 main::$3 main::$4 sum2::a#0 ] )
[18] (byte) sum2::b#0 ← (byte~) main::$3 [ main::i#2 main::$4 sum2::a#0 sum2::b#0 ] ( main:2 [ main::i#2 main::$4 sum2::a#0 sum2::b#0 ] )
[19] (byte) sum2::c#0 ← (byte~) main::$4 [ main::i#2 sum2::a#0 sum2::b#0 sum2::c#0 ] ( main:2 [ main::i#2 sum2::a#0 sum2::b#0 sum2::c#0 ] )
[20] call sum2 param-assignment [ main::i#2 sum2::return#1 ] ( main:2 [ main::i#2 sum2::return#1 ] )
[21] (byte) sum2::return#0 ← (byte) sum2::return#1 [ main::i#2 sum2::return#0 ] ( main:2 [ main::i#2 sum2::return#0 ] )
[11] (byte~) main::$2 ← (byte) sum::return#0 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] )
[12] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] )
[13] (byte) sum2::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 sum2::b#0 ] ( main:2 [ main::i#2 sum2::b#0 ] )
[14] (byte) sum2::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 sum2::b#0 sum2::c#0 ] ( main:2 [ main::i#2 sum2::b#0 sum2::c#0 ] )
[15] (byte) sum2::a#0 ← (byte) main::i#2 [ main::i#2 sum2::b#0 sum2::c#0 sum2::a#0 ] ( main:2 [ main::i#2 sum2::b#0 sum2::c#0 sum2::a#0 ] )
[16] call sum2 param-assignment [ main::i#2 sum2::return#1 ] ( main:2 [ main::i#2 sum2::return#1 ] )
[17] (byte) sum2::return#0 ← (byte) sum2::return#1 [ main::i#2 sum2::return#0 ] ( main:2 [ main::i#2 sum2::return#0 ] )
to:main::@4
main::@4: scope:[main] from main::@3
[22] (byte~) main::$5 ← (byte) sum2::return#0 [ main::i#2 main::$5 ] ( main:2 [ main::i#2 main::$5 ] )
[23] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 [ main::i#2 ] ( main:2 [ main::i#2 ] )
[24] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] )
[25] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] )
[18] (byte~) main::$5 ← (byte) sum2::return#0 [ main::i#2 main::$5 ] ( main:2 [ main::i#2 main::$5 ] )
[19] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 [ main::i#2 ] ( main:2 [ main::i#2 ] )
[20] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] )
[21] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] )
to:main::@return
main::@return: scope:[main] from main::@4
[26] return [ ] ( main:2 [ ] )
[22] return [ ] ( main:2 [ ] )
to:@return
sum2: scope:[sum2] from main::@3
[27] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:20 [ main::i#2 sum2::c#0 sum2::$0 ] )
[28] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:20 [ main::i#2 sum2::return#1 ] )
[23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] )
[24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] )
to:sum2::@return
sum2::@return: scope:[sum2] from sum2
[29] return [ sum2::return#1 ] ( main:2::sum2:20 [ main::i#2 sum2::return#1 ] )
[25] return [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] )
to:@return
sum: scope:[sum] from main::@1
[30] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:11 [ main::i#2 sum::c#0 sum::$0 ] )
[31] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:11 [ main::i#2 sum::return#1 ] )
[26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] )
[27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] )
to:sum::@return
sum::@return: scope:[sum] from sum
[32] return [ sum::return#1 ] ( main:2::sum:11 [ main::i#2 sum::return#1 ] )
[28] return [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -6,28 +6,24 @@
(byte*) SCREEN2
(const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word) 1024+(byte/signed byte/word/signed word) 40
(void()) main()
(byte~) main::$0 reg byte x 7.333333333333333
(byte~) main::$1 reg byte a 7.333333333333333
(byte~) main::$2 reg byte a 22.0
(byte~) main::$3 reg byte x 7.333333333333333
(byte~) main::$4 reg byte a 7.333333333333333
(byte~) main::$5 reg byte a 22.0
(label) main::@1
(label) main::@3
(label) main::@4
(label) main::@return
(byte) main::i
(byte) main::i#1 reg byte y 16.5
(byte) main::i#2 reg byte y 5.789473684210527
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 7.333333333333333
(byte()) sum((byte) sum::a , (byte) sum::b , (byte) sum::c)
(byte~) sum::$0 reg byte a 4.0
(label) sum::@return
(byte) sum::a
(byte) sum::a#0 reg byte y 4.333333333333333
(byte) sum::a#0 reg byte x 13.0
(byte) sum::b
(byte) sum::b#0 reg byte x 6.5
(byte) sum::b#0 reg byte y 4.333333333333333
(byte) sum::c
(byte) sum::c#0 c zp ZP_BYTE:2 6.5
(byte) sum::c#0 c zp ZP_BYTE:2 4.333333333333333
(byte) sum::return
(byte) sum::return#0 reg byte a 22.0
(byte) sum::return#1 reg byte a 4.333333333333333
@ -35,27 +31,23 @@
(byte~) sum2::$0 reg byte a 4.0
(label) sum2::@return
(byte) sum2::a
(byte) sum2::a#0 reg byte y 4.333333333333333
(byte) sum2::a#0 reg byte x 13.0
(byte) sum2::b
(byte) sum2::b#0 reg byte x 6.5
(byte) sum2::b#0 reg byte y 4.333333333333333
(byte) sum2::c
(byte) sum2::c#0 c zp ZP_BYTE:2 6.5
(byte) sum2::c#0 c zp ZP_BYTE:2 4.333333333333333
(byte) sum2::return
(byte) sum2::return#0 reg byte a 22.0
(byte) sum2::return#1 reg byte a 4.333333333333333
reg byte y [ main::i#2 main::i#1 ]
reg byte x [ main::$0 ]
reg byte a [ main::$1 ]
reg byte y [ sum::a#0 ]
reg byte x [ sum::b#0 ]
reg byte x [ main::i#2 main::i#1 ]
reg byte y [ sum::b#0 ]
zp ZP_BYTE:2 [ sum::c#0 sum2::c#0 ]
reg byte x [ sum::a#0 ]
reg byte a [ sum::return#0 ]
reg byte a [ main::$2 ]
reg byte x [ main::$3 ]
reg byte a [ main::$4 ]
reg byte y [ sum2::a#0 ]
reg byte x [ sum2::b#0 ]
reg byte y [ sum2::b#0 ]
reg byte x [ sum2::a#0 ]
reg byte a [ sum2::return#0 ]
reg byte a [ main::$5 ]
reg byte a [ sum2::$0 ]

View File

@ -0,0 +1,72 @@
import "c64"
const byte* SCREEN = $0400;
const byte* SPRITES_PTR = SCREEN+$3f8;
const byte* SPRITE = $2000;
void main() {
init();
do {
do { } while (*RASTER!=$ff);
anim();
} while(true);
}
// Fill and show a sprite, clear the screen
void init() {
*SPRITES_ENABLE = %00000001;
*SPRITES_EXPAND_X = 0;
*SPRITES_EXPAND_Y = 0;
SPRITES_XPOS[0] = 100;
SPRITES_YPOS[0] = 100;
SPRITES_COLS[0] = WHITE;
SPRITES_PTR[0] = (byte)(SPRITE/$40);
for(byte* sc=SCREEN; sc!=SCREEN+1000; sc++ ) {
*sc = ' ';
}
for(byte i : 0..63) {
SPRITE[i] = $ff;
}
}
signed word xpos = 0;
signed word ypos = 0;
signed word yvel_init = 100;
signed word xvel = 200;
signed word yvel = yvel_init;
const signed word g = -5;
void anim() {
// Check if the object has hit the ground
if(ypos<0) {
// Reset position
xpos = 0;
ypos = 0;
// Modify initial velocities
xvel = -xvel;
yvel_init = yvel_init-10;
if(yvel_init<-200) {
// Reset y velocity
yvel_init = 200;
}
yvel = yvel_init;
}
// Move object
yvel = yvel + g;
xpos = xpos + xvel;
ypos = ypos + yvel;
signed word sprite_x = xpos>>7 + 160;
signed word sprite_y = 230 - ypos>>5;
SPRITES_XPOS[0] = (byte)sprite_x;
SPRITES_YPOS[0] = (byte)sprite_y;
*SPRITES_XMSB = >sprite_x;
}

View File

@ -1,25 +1,8 @@
import "c64"
import "basic-floats"
import "print"
const byte* PROCPORT = $01;
const byte* CHARGEN = $d000;
const byte* SCREEN = $0400;
const byte* COLS = $d800;
const byte* RASTER = $d012;
const byte* BORDERCOL = $d020;
const byte* SPRITES_XPOS = $d000;
const byte* SPRITES_YPOS = $d001;
const byte* SPRITES_XMSB = $d010;
const byte* SPRITES_ENABLE = $d015;
const byte* SPRITES_EXPAND_Y = $d017;
const byte* SPRITES_PRIORITY = $d01b;
const byte* SPRITES_MC = $d01c;
const byte* SPRITES_EXPAND_X = $d01d;
const byte* SPRITES_MC1 = $d025;
const byte* SPRITES_MC2 = $d026;
const byte* SPRITES_COLS = $d027;
const byte sinlen_x = 221;
const byte[] sintab_x = $1000;